Installare uno Shibboleth Service Provider 1.3 su debian

Da sia.
Vai alla navigazione Vai alla ricerca
Warning
Warning
Warning

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

File: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

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

File: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.