LPS:WebAuth/Webová autentizovaná proxy

Z HelpDesk

Webová proxy autentizovaná WebAuthem

V rámci řešení grantu univerzitní knihovny ZČU jsme museli vyřešit problém, kdy (pouze) našim uživatelům zprostředkujeme přístup k nakoupeným elektronickým informačním zdrojům (EIZ). Tento případ by samozřejmě řešilo nasazení identity federation (např. tedy Shibbolethu), nicméně k tomu je zapotřebí, aby na toto řešení byly připraveny obě strany. Většinou se přístup k EIZ na straně poskytovatele řeší vyčtem povolených IP adres, ze kterých je možné přistupovat.

Toto velmi jednoduché elegantní řešení má však jeden háček. Uživatel může chtít přistupovat k EIZ z jiného prostředí, například z domova, internetové kavárny nebo počítačové učebny univerzity, kde je na stáži. V těchto případech je mu přístup k EIZ odepřen.

Jednoduchým řešením je zprovoznit webovou proxy v IP rozsahu organizace tak, že bude mezi uživatelem a poskytovatelem EIZ zprostředkovávat veškerou komunikaci. Z pohledu poskytovatele bude vše v pořádku, neboť přistupující stroj bude z povoleného IP rozsahu.

Abychom nezprostředkovali přístup všem uživatelům Internetu, ale pouze uživatelům z dané organizace, je nutné na webové proxy zajistit ověřování přistupujících uživatelů. K tomuto účelu použijeme již osvědčené řešení ověřování v prostředí WWW: WebAuth.

Řešení WebAuth je však v současné době dostupné pouze pro verze Apache 2.0.x, které neumožňují přes webovou proxy tunelovat údaje uložené v cookies. Jelikož většinou v těchto cookies poskytovatelé EIZ uchovávají údaje o přistupujícím uživateli, je jejich použití nutné. Za tímto účelem jsme museli WebAuth přiohnout pro Apache 2.2.x, neboť v této verzi je již možné cookies mezi uživatelem a poskytovatelem EIZ bezproblémově tunelovat. Získáváme tak webovou autentizovanou proxy, jejíž schéma je patrné z obrázku.

Web auth proxy.jpg

.

Konfigurace takovéto webové autentizované proxy ve WWW serveru Apache 2.2.x vypadá pak následovně:

ProxyRequests on
<Proxy http://proquest.umi.com/*>
  order allow,deny
  allow from all
  AuthType WebAuth
  require valid-user
  RequestHeader set Webauthproxy ":%{WEBAUTH_USER}e:"
  WebAuthExtraRedirect on
</Proxy>

<VirtualHost 147.228.54.29:8443>
   ServerName proquest.zcu.cz
   ServerAdmin bar@uk.zcu.cz

   LogFormat  "%h %l %u %t %v \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" virtual
   ErrorLog /usr/local/apache/logs/ssl-proquest-error_log
   CustomLog /usr/local/apache/logs/ssl-proquest-access_log virtual

   SSLEngine on
   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
   SSLCertificateFile /usr/local/apache/ssl/server.crt
   SSLCertificateKeyFile /usr/local/apache/ssl/server.key

   <Location />
       ProxyPass http://proquest.umi.com/
       ProxyPassReverse http://proquest.umi.com/
       ProxyPassReverseCookieDomain .umi.com proquest.zcu.cz
       ProxyPassReverseCookiePath / /
   </Location>
</VirtualHost>