Installare uno Shibboleth Service Provider 3 su debian

Da sia.
Vai alla navigazione Vai alla ricerca

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.