Installare uno Shibboleth Service Provider 3 su debian

Da sia.
Vai alla navigazione Vai alla ricerca

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.