shibboleth2.xml s ohledem na jméno, web, umístění certifikátů, umístění metadat, viz Konfigurace SP 2.0 (czTestFed)https://muj_server/Shibboleth.sso/Metadata získat moje vlastní metadata a odeslat je Novakovovi. Pokud to nejde, pomůže stáhnout metadata ručně a nastavit jejich čtení z lokálního souboru.attributes-map.xml převod atributů na proměnné prostředí a případně HTTP hlavičkyLocation tagu <SessionInitiator> v souboru shibboleth2.xml, normálně tedy /WAYF.
V konfiguraci Apache je třeba mít direktivu pro <Location> (chrání libovolná URL, nutné u servletů) nebo <Directory> (chrání soubory ve fyzickém adresáři, vhodné u PHP) specifikující ochranu:
<Location "/aplikace/*"> # zapne ochranu Shibbolethem AuthType shibboleth # Off - lazy sessions, On - vždy autentizuje ShibRequireSession On # On - atributy v HTTP hlavičkách a proměnných, Off - jen v proměnných ShibUseHeaders On # může kdokoliv autentizovaný require valid-user </Location>
případně pro lazy sessions
<Directory "/srv/www/htdocs/phpBB3">
Options Indexes FollowSymLinks
AllowOverride Limit
Order allow,deny
Allow from all
AuthType shibboleth
ShibRequireSession Off
ShibUseHeaders on
require shibboleth
</Directory>
U direktivy require je možné používat aliasy z attribute-map.xml, tj. třeba
#jen lidé opravdu z Masarykovy Univerzity, tj. ne návštěvníci knihovny MU s účtem v ISu require affiliation member@muni.cz
a dokonce regulární výrazy, tj.
# kdokoliv s affiliation member z libovolné domény .cz require affiliation ~ ^member@.+\.cz$
Viz https://spaces.internet2.edu/display/SHIB/SPProtectionConfig (podrobnější pro Shib1) a https://spaces.internet2.edu/display/SHIB2/NativeSPProtectContent (příliš stručné, ale pro Shib2)
V PHP lze atributy získat z proměnných prostředí, a i HTTP hlavičky jsou mapovány na proměnné prostředí.
Pokud mám v attribute-map.xml
<Attribute name="urn:mace:dir:attribute-def:mail" id="mail" aliases="Shib-InetOrgPerson-mail"/>
pak získám přihlášeného uživatele a jeho email takto:
function get_user_name() {
if(empty($_SERVER['REMOTE_USER'])) return NULL;
return $_SERVER['REMOTE_USER'];
}
/* z HTTP hlavičky */
function get_user_email() {
return $_SERVER['HTTP_SHIB_INETORGPERSON_MAIL'];
}
/* z proměnné pojmenované aliasem Shib-InetOrgPerson-mail */
function get_user_email2() {
return $_SERVER['Shib_InetOrgPerson_mail'];
}
/* z proměnné pojmenované obsahem atributu id */
function get_user_email3() {
return $_SERVER['mail'];
}
Pro propojení TomCatu a Apache je nejlepší použít mod_jk, v konfiguraci Apache stačí mít
<IfModule mod_jk.c> JkWorkerProperty worker.list=tomcat JkWorkerProperty worker.tomcat.type=ajp13 JkWorkerProperty worker.tomcat.host=localhost JkWorkerProperty worker.tomcat.port=8009 JkMount /aplikace/* tomcat </IfModule>
a v TomCatu je v conf/server.xml AJP13 connector na portu 8009 aktivován v defaultní konfiguraci. Hodí se zakázat v TomCatu HTTP connectoru přijímat vnější požadavky, aby uživatelé nemohli Shibboleth obejít, a nastavit AJP13 connectoru tomcatAuthentication=„false“ aby se předávat REMOTE_USER do request.getRemoteUser():
<Connector port="8080" protocol="HTTP/1.1" address="127.0.0.1" >
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false"/>
V servletech pak lze Shibboletí atributy číst z HTTP hlaviček (pokud je to nastaveno), tj.
String user = request.getRemoteUser();
String mail = request.getHeader("Shib-InetOrgPerson-mail");
Pozor, kódování češtiny v Shibbolethu je utf-8 (protože si předává XML dokumenty), ale HTTP hlavičky jsou v iso-8859-1, takže je potřeba opravit kódování:
String jmeno = request.getHeader("cn");
if(jmeno!=null) jmeno = new String(jmeno.getBytes("iso-8859-1"),"utf-8");
Dále si lze v konfiguraci Apache nastavit mod_jk tak, aby určité proměnné předával jako attributy requestu:
# v konfiguraci Apache JkEnvVar Shib-InetOrgPerson-mail JkEnvVar mail
// v servletu
String mail = (String) request.getAttribute("Shib-InetOrgPerson-mail");
String mail2 = (String) request.getAttribute("mail");
// v JSP EL
${mail}
Pozor, jména takto předaných proměnných nelze získat pomocí request.getAttributeNames(), je to chyba v TomCatu.
V konfiguraci IIS se nedá nic nastavit, je třeba použít <RequestMap>v shibboleth2.xml.
V ASP lze číst atributy z HTTP hlaviček, tj. např.:
Request.ServerVariables("HTTP_MAIL")