LPS:WebAuth/Konfigurace WebAuthu

Z HelpDesk

Konfigurace WebAuthu na aplikačních serverech

Konfigurace modulů na straně aplikačního serveru je rozdělena na dvě části. První provádí obecné nastavení, jako je definování adresy URL pro ověření dosud neznámého uživatele na WebKDC serveru, soubor s krb klíčem principalu, apod. Definice nastavení pro modul mod_webauth může vypadat tedy například takto:

   ## WebAuth nastaveni
   WebAuthLoginURL "https://webkdc.zcu.cz/login.fcgi"
   WebAuthWebKdcURL "https://webkdc.zcu.cz/webkdc-service/"
   WebAuthWebKdcPrincipal webkdc/webkdc
   WebAuthKeyring /etc/webauth/keyring
   WebAuthKeyringAutoUpdate on
   WebAuthKeyringKeyLifetime 30d
   WebauthKeytab /etc/webauth/keytab
   WebAuthServiceTokenCache /etc/webauth/service_token.cache

Většina konfigurace tohoto modulu lze odvodit z názvu jednotlivých direktiv, ale pro pořádek je rozepíšeme. První URL odkazuje na přihlašovací formulář; druhý URL odkaz směřuje na adresu, kam aplikační servery přímo posílají kryptované požadavky; další řádka obsahuje název krb principalu služby WebKDC. Další tři direktivy souvisejí s lokálně uloženým privátním AES klíčem aplikačního serveru. <prikaz>WebAuthKeyring</prikaz> sděluje modulu, kde daný klíč leží; direktiva WebAuthKeyringAutoUpdate povoluje modulu automatickou změnu tohoto klíče a WebAuthKeyringKeyLifetime určuje, jak dlouho může být jednou vygenerovaný klíč používán před další výměnou. Direktiva WebauthKeytab sděluje, kde na disku je možné najít klíč krb principalu aplikačního serveru. Poslední direktiva slouží k uložení service-tokenu, který se tak stává použitelným pro všechny nově vytvářené procesy WWW serveru Apache.

Autorizace uživatelů

V případě, že je na aplikačním serveru použit i modul mod_webauthldap, pak další konfigurace se týká tohoto modulu:

   ## WebAuthLDAP nastaveni
   WebAuthLdapHost ldap.zcu.cz
   WebAuthLdapBase ou=rfc2307,o=zcu,c=cz
   WebAuthLdapAuthorizationAttribute cn
   WebAuthLdapKeytab /etc/apache2/ldapkeytab webauth/sso.zcu.cz
   WebAuthLdapFilter memberUid=USER
   WebAuthLdapTktCache /tmp/webauthldap.tkt

První direktiva určuje, na kterém serveru bude hledat informace pro autorizaci podle skupin. Další direktiva WebAuthLdapBase definuje konkrétní úložiště s informacemi o skupinách. WebAuthLdapAuthorizationAttribute určuje, který atribut koresponduje s položkou v LDAPu obsahující skupiny uživatelů. WebAuthLdapKeytab obsahuje odkaz na soubor s klíčem krb principalu použitého pro dotaz na LDAP server. WebAuthLdapFilter definuje filtr do LDAPu, který určuje, na kterou z položek je mapován login uživatelů. Poslední direktiva určuje Kerberos cache, která pokud obsahuje validní krb ticket, tak je použit, jinak je použit dříve definovaný keytab k získání nového krb ticketu.

Další část konfigurace už se týká přímo chránění přístupu pro definovaný adresář pomocí WebAuth SSO řešení.

     <Directory /usr/local/data/www/>
         AllowOverride None
         AuthType WebAuth
         Require privgroup lps civ
         Require user indy bike dolf sustr4
     </Directory>

Důležité jsou poslední tři řádky uvnitř tagu Directory. Direktiva AuthType definuje, že přístup pro daný adresář je používána služba WebAuth. Další řádek určuje seznam povolených skupin uživatelů (skupiny lps a civ). Poslední řádek obsahuje explicitní seznam povolených uživatelů, kteří budou autorizováni bez ohledu na příslušnost v některé ze skupin. V případě, že aplikační server neobsahuje modul mod_webauthldap, pak není možné přístup omezovat na seznam skupin uživatelů. Je možné povolit přístup jen pro vyjmenované uživatele, případně lze povolit všechny uživatele pomocí direktivy Require valid-user.

Poznámky

Při upgradu OS, se s balikem libcurl sveze i soubor s kořenovými certifikáty curl-ca-bundle.crt, chyba se pak projeví nefunkčností AAA na webu a hláškou:

[error] mod_webauth: curl_easy_perform: error(60): SSL certificate problem, verify that the CA cert is OK. Details: 
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Pomůže nahrát certifikát do /etc/ssl/certs a

 for i in *.crt; do echo delam $i; ln -s $i $(openssl x509 -noout -hash -in $i).0; done