Installare uno Shibboleth Service Provider 1.3 su debian
Configurazione obsoleta: usare shibboleth 2.2
Prerequisiti
- apache2.2
- ntp
Prima di cominciare
Accertarsi di avere un certificato digitale per il server. Il certificato NON deve essere del tipo Web Server. Il tipo Domain controller va benissimo, vanno bene i certificati attribuiti da SCS.
Configurare il server web con lo ssl potrebbe non essere fondamentale se l'autenticazione e' delegata solo a shibboleth, ma si consiglia comunque di farlo per il test della configurazione di apache.
Installare i pacchetti
I pacchetti di shibboleth sono ora presenti nella distribuzione ufficiale:
apt-get install libapache2-mod-shib
Questo comando è sufficiente per installare i moduli e le librerie necessarie.
/etc/apache2/sites-available/shib_sp
Adesso si crea un sito protetto con shibboleth:
<Location /secure> AuthType shibboleth ShibRequireSession On require valid-user </Location>
Poi si attiva il modulo ed il sito:
a2enmod shib a2ensite shib_sp /etc/init.d/apache2 force-reload
Editare la configurazione
shibboleth.xml
Il file shibboleth.xml deve essere collocato in /etc/shibboleth. Contiene i dati dello SP shibboleth.
Dal file di esempio bisogna variare host name nella sezione RequestMapProvider:
<RequestMapProvider type="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider"> <RequestMap applicationId="default"> <Host name="soap01.unimore.it"> <Path name="secure" authType="shibboleth" requireSession="true"/> </Host> </RequestMap> </RequestMapProvider>
Se e' necessario del controllo di accesso, si inserisce dentro la direttiva <Path> (il controllo accesso e' discusso in Integrare_Moodle_con_Shibboleth).
Cambiare il nome dell'host in homeURL e assegnare un providerId del tipo https://web.unimore.it/servizio o web.unimore.it/servizio
<Applications id="default" providerId="https://soap01.unimore.it/sp" homeURL="https://soap01.unimore.it" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
Il providerId deve essere riportato identico sul file metadata.xml.
Nella sezione:
<SessionInitiator isDefault="true" id="default" Location="/WAYF/" Binding="urn:mace:shibboleth:sp:1.3:SessionInit" wayfURL="https://shibboleth.unimore.it/WAYF/" wayfBinding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"/>
Sostituire https://shibboleth.unimore.it/WAYF/ con https://shibboleth.unimore.it/shibboleth-idp/SSO se il servizio è riservato agli utenti di unimore.
Cambiare il nome del certificato e della chiave privata nelle sezione <Credentials>
Controllare che la chiave ed il certificato siano quelli giusti! Ad esempio lanciare:
openssl s_client -connect shibboleth.unimore.it:8443 -cert /path/to/cert -key /path/to/key
Se appare ogni tipo di errore salvo un riferimento a un self-signed certificate di shibboleth.unimore.it deve essere corretto; se appare la richiesta:
Enter pass phrase for /path/to/key:
significa che bisogna sproteggere la chiave.
native.logger
Cambiare il path del file di log a:
log4j.appender.native_log.fileName=/var/log/apache2/native.log
Poi creare il file e darvi come proprietario www-data:
touch /var/log/apache2/native.log chown www-data /var/log/apache2/native.log
La lettura di questo file di log è fondamentale per comprendere il funzionamento dell'autorizzazione.
metadata.xml
Aggiungere in coda al file metadata.xml una sezione per il proprio SP del tipo:
<EntityDescriptor entityID="agosto.unimore.it/moodle"> <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol"> <KeyDescriptor use="signing"> <ds:KeyInfo> <ds:KeyName>agosto.unimore.it</ds:KeyName> <ds:X509Data> <ds:X509Certificate> MIIF2TCCBMGgAwIBAgIBZDANBgkqhkiG9w0BAQUFADCBpDELMAkGA1UEBhMCSVQx HzAdBgNVBAcTFk1vZGVuYSBlIFJlZ2dpbyBFbWlsaWExLjAsBgNVBAoTJVVuaXZl cnNpdGEnIGRpIE1vZGVuYSBlIFJlZ2dpbyBFbWlsaWExDjAMBgNVBAsTBUNlU0lB MTQwMgYDVQQDEytBdXRvcml0YScgZGkgQ2VydGlmaWNhemlvbmUgVW5pTW9SZS1F dXJvUEtJMB4XDTA3MDkyNTE0MjE0OVoXDTEwMTIzMDEyMDAwMFowdzELMAkGA1UE BhMCSVQxLjAsBgNVBAoTJVVuaXZlcnNpdGEnIGRpIE1vZGVuYSBlIFJlZ2dpbyBF bWlsaWExDjAMBgNVBAsTBUNlU0lBMRowGAYDVQQDExFhZ29zdG8udW5pbW9yZS5p dDEMMAoGA1UEBRMDMTAwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5Sjbn 6ufGXakGNxC8DhNLpw72pkWcXkBdR2bK7yAZPSUTSJ9aH/pMY6Yem94N09dkhS5t IdJg1tVHHm8r3YsYY/+R7pbAyPzeEqRca8X909RhNoz5OhSaGmCXYyBD5nKG3lsy awpqpxwegzS+nf8njdOB26iaY3NDQ9iPmWGhmQIDAQABo4ICxDCCAsAwCQYDVR0T BAIwADBQBgNVHSAESTBHMAYGBCoDAwQwBgYEKgMDBTAGBgQqAwMGMC0GBCoDAwcw JTAjBggrBgEFBQcCARYXaHR0cDovL3NvbWUudXJsLm9yZy9jcHMwCwYDVR0PBAQD AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATBIBglghkgBhvhCAQ0E OxY5RG9tYWluIENvbnRyb2xsZXIgb2YgVW5pdmVyc2l0YSBkaSBNb2RlbmEgZSBS ZWdnaW8gRW1pbGlhMC8GCSsGAQQBgjcUAgQiHiAARABvAG0AYQBpAG4AQwBvAG4A dAByAG8AbABsAGUAcjAdBgNVHQ4EFgQUeC7OeYe62sjhUygJjDd9bOoCp9YwegYD VR0jBHMwcYAUjbZgDSUW96iTKoh3rb+VfuHNbq6hVaRTMFExCzAJBgNVBAYTAklU MRAwDgYDVQQKEwdFdXJvUEtJMTAwLgYDVQQDEydFdXJvUEtJIEl0YWxpYW4gQ2Vy dGlmaWNhdGlvbiBBdXRob3JpdHmCAgn5MEwGA1UdEQRFMEOBHWZyYW5jZXNjby5t YWx2ZXp6aUB1bmltb3JlLml0ghFhZ29zdG8udW5pbW9yZS5pdIIPYWdvc3RvLnVu aW1vLml0MCcGA1UdEgQgMB6BHGNhbnRhcm9uaS5yb2JlcnRhQHVuaW1vcmUuaXQw NgYJYIZIAYb4QgEEBCkWJ2h0dHA6Ly9wa2kudW5pbW9yZS5pdC9wdWIvY3JsL2Nh Y3JsLmNybDA2BglghkgBhvhCAQMEKRYnaHR0cDovL3BraS51bmltb3JlLml0L3B1 Yi9jcmwvY2FjcmwuY3JsMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHA6Ly9wa2kudW5p bW9yZS5pdC9wdWIvY3JsL2NhY3JsLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAmsO2 I+XJ8FGVQk3/DFqyn2/dX49bmN/DKN8GoMsDwMCu4fEa1RbYN9Fznk/oC+wKsfP0 Vk/D/txFms+Eo/AjTr1iu+q4K7765emVzUhSGNH5HTEyIkTGBTee5fVNVFe5tjdU ONiRfY1qLUe1e5ujwldmjbbx35iPwtr6R+xczXcuUUii7UNbStetyO7KeqKyqZU9 BB/Z03zDTN1RJn67pl7q4wVs3qRrxPKRtWXFTS+NekpnIfA+ux4YrFArie+YwjBy om7XLOtg9AvMucDoGRxr99rN5jY9lYXSaBf9XcsyYLE3++QLuCDWAtLnyfewb3wW i2uwaTEjMR7yrq41bQ== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </KeyDescriptor> <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> <AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" Location="https://agosto.unimo.it/Shibboleth.sso/SAML/POST"/> <AssertionConsumerService index="2" Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01" Location="https://agosto.unimo.it/Shibboleth.sso/SAML/Artifact"/> </SPSSODescriptor> </EntityDescriptor>
Ovviamente dopo aver cambiato il nome host ed il certificato.
Il frammento <ds:X509Data> che contiene il dump del certificato non e' necessario se il certificato e' stato emesso dalle autorità di certificazione europki o SCS. In questo caso, e' sufficiente:
<KeyDescriptor use="signing"> <ds:KeyInfo> <ds:KeyName>agosto.unimore.it</ds:KeyName> </ds:KeyInfo> </KeyDescriptor>
(ovvimente il nome sul certificato deve coincidere con il nome DNS del client).
Il nuovo file metadata.xml deve sostituire quello sul server shibboleth, per essere scaricato da tutti gli SP.
AAP.xml
Ridefinire il mappaggio degli attributi passati dallo IdP con le variabili di ambiente che saranno usate nell'applicazione.
Accertarsi che lo IdP rilasci gli attributi necessari.