Installare uno Shibboleth Service Provider 3 su debian
Scegliere lo entityID
Lo entityID è il nome del servizio per lo IdP Shibboleth. E' una stringa con la forma di un url, completo di schema, ad esempio:
http://server.unimore.it/sp
Il path dopo lo hostname è del tutto arbitrario, le scelte più comuni sono 'sp', 'shibboleth', 'shibboleth-sp'.
Installare il software
sudo apt-get install libapache2-mod-shib sudo a2enmod shib
Configurare shibboleth
shibboleth2.xml
Per chi usa apache2 non è necessario modificare lo entityID: lasciare i segnaposto '*example.org' perché verranno corretti sul virtual host.
- contatti e amministratori: almeno modificare la riga: supportContact="root@localhost"
- metadata: sostituire il default con:
<MetadataProvider type="XML" url="http://metadata.unimore.it/unimore-idp-metadata-signed.xml" backingFilePath="unimore-idp-metadata-signed.xml" maxRefreshDelay="7200"> <MetadataFilter type="Signature" certificate="unimore_signer_crt.pem"/> </MetadataProvider>
Scaricare anche unimore_signer_crt.pem (chiave pubblica per la verifica della firma dei metadati) nella directory /etc/shibboleth/.
Il fingerprint del certificato di firma è:
SHA256 Fingerprint=AC:3D:4A:DF:22:5F:99:81:04:5A:CA:52:73:65:A3:65:26:FA:67:CE:A1:EF:00:3F:18:E6:43:08:92:BE:DD:AC SHA1 Fingerprint=7A:9E:15:8B:F7:77:0F:5B:99:3E:30:56:72:B2:C0:8C:91:64:34:4F
Verifica parziale
Adesso shibd dovrebbe avviarsi senza errori nello shibd.log.
Se uno anticipa la parte di preparazione di apache2, quando accede alla risora protetta (/secure, ad esempio) viene ridiretto sull'IdP dove trova una pagina di errore del tipo 'Unacceptable service provider'.
attribute-map.xml
Scaricare attribute-map.xml in /etc/shibboleth: e' la mappa degli attributi unimore che shibboleth può trasmettere con il loro nome come variabile di ambiente.
Ovviamente come impostazione predefinita solo un piccolo sottoinsieme viene valorizzato senza accordi con support_identity.
Dopo queste configurazioni avviare systemctl restart shibd e verificare che nei log in /var/log/shibboleth/shibd.log non ci siano errori e che shibd abbia scaricato in /var/cache/shibboleth il file di metadati unimore-idp-metadata-signed.xml.
Modificate il metadata della federazione
Spedire a --Malvezzi 14:12, 9 November 2009 (CET) lo xml che si scarica da
http(s)?://tuo_server.unimore.it/Shibboleth.sso/Metadata
con questa avvertenze:
- rispettare maiuscole e minuscole nell'url (cioe': Metadata va scritto con la M maiuscola);
- usare come schema http/https quello dello shibboleth2.xml;
- non usare localhost ma il FQDN del server.
Proteggere una cartella in apache
Come impostazione predefinita la cartella /secure e' protetta: creare la cartella
mkdir -p /var/www/secure
e, se si usa il php, creare un file index.php come da http://yucata.unimore.it/samba-ldap/shibboleth/index.php.txt.
Per proteggere ad esempio la cartella /secure aggiungere nel virtual host relativo:
<Directory /> Options FollowSymLinks AllowOverride None ShibRequestSetting entityIDSelf https://$hostname/sp </Directory> <Location /secure> # Sibboleth Service Provider AuthType shibboleth ShibRequestSetting requireSession 1 ShibRequestSetting entityID https://idp.unimore.it/idp/shibboleth ShibRequestSetting entityIDSelf https://$hostname/sp require valid-user </Location> # se hai Phusion Passenger, ad esempio perché il sito è in rails: #<Location /Shibboleth.sso> # PassengerEnabled off # Satisfy Any #</Location> # se invece hai un altro framework che prende il controllo di tutte le rotte, con una # regola di rewrite bisogna fare in modo che lasci la presa sul path /Shibboleth.sso
entityIDSelf è lo entityID dello SP (vedi in cima alla pagina). $hostname viene sostituito da apache2 con lo hostname come ricevuto dal virtual host.
E' possibile richiedere condizioni di autorizzazione particolari: vedi la documentazione, link <htaccess> (e' possibile proteggere una cartella anche con una modifica dello shibboleth2.xml)
Usare shibboleth dai propri applicativi
Lo uid di autenticazione si dovrebbe trovare nel REMOTE_USER con postfisso @unimore.it. Altri attributi utenti si trovano nella variabili d'ambiente col nome specificato nell'attribute-map.xml (meglio non cambiarlo).
Se nell'attribute map compare ad esempio la riga:
<Attribute name="urn:oid:2.5.4.11" id="ou"/>
Questo vuol dire che sara' presente la variabile d'ambiente server 'ou' con il valore dell'attributo definito nell'urn-oid corrispondente (in questo caso e' la organizational unit).
Questo e' vero solo se lo IdP rilascia quell'attributo.