Exempelkonfiguration för Apache
Guide för exempelkonfiguration för Apache
Typexemplet nedan gäller under förutsättning att:
- det rör en tjänst som tillhandahålls av en Apache-webbserver
- den del av tjänsten som skall skyddas är placerad i en underkatalog/under-URL på webbplatsen
- du har Apache-modulen mod_auth_cas installerad.
Konfiguration
Laddning av modulen
Sköts vanligen av filen /etc/httpd/conf.modules.d/10-auth_cas.conf som följer med mod_auth_cas (RPM-paketet mod_auth_cas).
Annars får du manuellt lägga in:
<IfModule !auth_cas_module>
LoadModule auth_cas_module modules/mod_auth_cas.so
</IfModule>
Allmän konfiguration
CASCookiePath /var/cache/httpd/mod_auth_cas/
# NOTE: Choose Joint Web Login production or testing environment by activating the relevant lines!
CASLoginURL https://weblogin.uu.se/idp/profile/cas/login
CASValidateURL https://weblogin.uu.se/idp/profile/cas/serviceValidate
CASVersion 2
CASDebug On
# use Red Hat's CA certificate bundle (should continue to work as long as Joint Web Login is using a well-known, commercial certificate issuer)
CASCertificatePath /etc/pki/tls/certs/ca-bundle.crt
CASTimeout 28800
CASIdleTimeout 28800
Själva skyddet
# protect a single directory; any valid user is let in
<Directory "/var/www/html/wordpress">
Require valid-user
AuthType CAS
</Directory>
# protect a single directory; only certain users will be let in
<Directory "/var/www/html/phpmyadmin">
Require user abcd1234 efgh5678
AuthType CAS
</Directory>
# protect a certain URL; any valid user is let in
<Location "/secure">
Require valid-user
AuthType CAS
</Location>
# protect the entire site; any valid user is let in
<Location "/">
Require valid-user
AuthType CAS
</Location>
Se /usr/share/doc/mod_auth_cas-*/README på din server för information om fler direktiv till mod_auth_cas.
Utloggning
För att logga ut användaren från en skyddad resurs men inte ur Gemensam webbinloggning i sin helhet så måste du ta bort de cookies som mod_auth_cas sätter i besökarens webbläsare för den skyddade resursen. Detta kan du göra genom att se till användaren anropar en utloggningslänk på formen http[s]://myservice.uu.se/wordpress/?ServiceLogout=true. Anropet fångas upp av mod_rewrite och resulterar i en Set-Cookie-header från mod_headers som tar bort cookies, samt en omdirigering till webbplatsens förstasida:
RewriteEngine On
# detect HTTPS
RewriteCond %{HTTPS} =on [NC]
RewriteRule .* - [E=PROTOCOL:https]
# detect HTTP
RewriteCond %{HTTPS} !=on [NC]
RewriteRule .* - [E=PROTOCOL:http]
# catch logout requests for CAS-protected resources
RewriteCond %{QUERY_STRING} (^|[;&])ServiceLogout($|[;&=])
# where to redirect on CAS logouts (here: to the front page of the current website -- adjust as needed)
# this also captures the path of the protected resource (needed for unsetting CAS cookies)
RewriteRule ^((/[^/]*)*/)([^/]*)$ %{ENV:PROTOCOL}://%{SERVER_NAME}/? [R,L,E=COOKIE_PATH:$1]
# unset MOD_AUTH_CAS/MOD_AUTH_CAS_S cookie for a certain path (COOKIE_PATH environment variable set by mod_rewrite)
Header always set Set-Cookie "MOD_AUTH_CAS=;Path=%{COOKIE_PATH}e; HttpOnly; expires=Thu, 01 Jan 1970 00:00:00 GMT" "expr=%{HTTPS} != 'on' && -n reqenv('COOKIE_PATH')"
Header always set Set-Cookie "MOD_AUTH_CAS_S=;Secure;Path=%{COOKIE_PATH}e; HttpOnly; expires=Thu, 01 Jan 1970 00:00:00 GMT" "expr=%{HTTPS} == 'on' && -n reqenv('COOKIE_PATH')"
Vart användaren omdirigeras efter utloggning är upp till dig. Om hela webbplatsen är skyddad av CAS måste du omdirigera användaren till en helt annan webbplats, annars blir användaren automatiskt inloggad på nytt när denne landar på förstasidan.
Kom ihåg att användaren fortfarande är inloggad i Gemensam webbinloggning, och därför automatiskt loggas in i allt som det krävs inloggning för – däribland förstasidan.