Installare uno Shibboleth Service Provider 3 su debian
Installare il software
sudo apt-get install shibboleth-sp2-schemas libapache2-mod-shib2 sudo a2enmod shib2
In alternativa (solo per Debian Lenny): seguire le istruzioni dello SWITCH per installare shibboleth-sp dai backports. In questo modo si installa la versione piu' recente.
Generare un certificato per lo SP
Usare il comando:
/usr/sbin/shib-keygen -h mioserver.unimore.it -y 20 -e https://mioserver.unimore.it/shib
Per generare un certificato self signed di una durata piuttosto lunga (10-25 anni) con entityId del tipo:
https://mioserver.unimore.it/shib
che deve coincidere con quello inserito nel file shibboleth2.xml.
Nelle versioni uguali o successive alla 2.3.1 lanciare anche:
sudo chown _shibd /etc/shibboleth/sp-key.pem
che permette al demone shibd di essere eseguito dall'utente _shibd e non da root.
Configurare shibboleth
shibboleth2.xml
Modificare lo shibboleth2.xml del pacchetto nei punti:
- entityId: e' lo url del proprio server tipo:
<ApplicationDefaults id="default" policyId="default" entityID="http://mio_server.unimore.it/sp" homeURL="http://mio_server.unimore.it" REMOTE_USER="eppn persistent-id targeted-id" signing="false" encryption="false" >
- modificare Host name con il proprio hostname in <RequestMap applicationId="default">
<Host name="mio_server.unimo.it"> <Path name="secure" authType="shibboleth" requireSession="true"/> </Host>
Se il server ha due nomi (mio_server.unimo.it e mio_server.unimore.it) servono due sezioni.
- sessionInitiator: commentare quanto nel file di default e aggiungere:
<SessionInitiator type="Chaining" Location="/idp" isDefault="true" id="idp" relayState="cookie" entityID="https://idp.unimore.it/idp/shibboleth"> <SessionInitiator type="SAML2" defaultACSIndex="1" template="bindingTemplate.html"/> <SessionInitiator type="Shib1" defaultACSIndex="5"/> </SessionInitiator>
- contatti e amministratori: almeno modificare la riga: supportContact="root@localhost"
- metadata: sostituire il default con:
<MetadataProvider type="Chaining"> <MetadataProvider type="XML" uri="https://shibboleth.unimore.it/inner-metadata.xml" backingFilePath="/etc/shibboleth/inner-metadata.xml" reloadInterval="7200"> <SignatureMetadataFilter certificate="garrcert015e.bundle"/> </MetadataProvider> </MetadataProvider>
shibboleth2.xml deve essere copiato in /etc/shibboleth/. Copiare anche garrcert015e.bundle (chiave pubblica per la verifica della firma dei metadati).
Se il demone shibd e' eseguito dall'utente _shibd, bisogna permettere a shibd di scrivere su /etc/shibboleth
sudo chown _shibd /etc/shibboleth
oppure creare a mano con touch il file inner-metadata.xml e darlo in proprieta' a _shibd
sudo touch /etc/shibboleth/inner-metadata.xml sudo chown _shibd /etc/shibboleth/inner-metadata.xml
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 /etc/init.d/shibd start e verificare che nei log in /var/log/shibboleth/shibd.log non ci siano errori e che shibd abbia scaricato in /etc/shibboleth il file di metadati inner-metadata.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://apps.lettere.unimore.it/samba-ldap/shibboleth/index.php.txt.
Per proteggere ad esempio la cartella sso aggiungere nel virtual host relativo:
<Location /sso> # Sibboleth Service Provider AuthType shibboleth ShibRequireSession On require valid-user </Location>
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.