Table of Contents
RHEL 9: Configurare un Service Provider SAML 2.0
Work in progress
aggiornamento delle istruzioni RHEL 7
https://wiki.infn.it/cn/ccr/aai/howto/saml-sp-rhel7
Shibboleth
Installazione
Scaricare il repository per shibboleth collegandosi qui:
https://shibboleth.net/downloads/service-provider/RPMS/
e selezionando Rocky Linux 9
cat /etc/yum.repos.d/shib.repo [shibboleth] name=Shibboleth (rockylinux9) # Please report any problems to https://shibboleth.atlassian.net/jira type=rpm-md mirrorlist=https://shibboleth.net/cgi-bin/mirrorlist.cgi/rockylinux9 gpgcheck=1 gpgkey=https://shibboleth.net/downloads/service-provider/RPMS/repomd.xml.key https://shibboleth.net/downloads/service-provider/RPMS/cantor.repomd.xml.key enabled=1
Installare i pacchetti:
epel-release, httpd, mod_ssl
Installare shibboleth
dnf install shibboleth.x86_64
Configurazione
Modificare il file: /etc/shibboleth/shibboleth2.xml
- Sostituire tutte le occorrenze di
sp.example.org
con l'hostname del SP - Sostituire tutte le occorrenze di
signing="false"
consigning="true"
- Sostituire
https://idp.example.org/idp/shibboleth
conhttps://idp.infn.it/saml2/idp/metadata.php
oppure conhttps://idp.infn.it/testing/saml2/idp/metadata.php
per l'IdP di test. - Impostare
handlerSSL="true"
ecookieProps="https"
- Prima del tag
<AttributeExtractor…
inserire
<MetadataProvider type="XML" path="idp.infn.it-metadata.xml"/>
- Scaricare i metadati dell'IdP
IdP di Produzione
# curl -o /etc/shibboleth/idp.infn.it-metadata.xml https://idp.infn.it/saml2/idp/metadata.php
IdP di Test
# curl -o /etc/shibboleth/idp.infn.it-metadata.xml https://idp.infn.it/testing/saml2/idp/metadata.php
- Configurare il mapping degli attributi. Scaricate il file già pronto:
# curl -o /etc/shibboleth/attribute-map.xml https://wiki.infn.it/_media/cn/ccr/aai/howto/attribute-map.xml
- Far (ri)partire i servizi
# systemctl restart httpd # systemctl restart shibd
Metadati da inviare
Per scaricare i metadati da inviare, collegarsi qui
https://SP-HOSTNAME/Shibboleth.sso/Metadata
Attenzione con le SELinux abilitate si potrebbe avere la seguente segnalazione:
Metadata Request Failed
Mettere, temporaneamente le SELinux in permissive
setenforce permissive
Collegarsi qui: https://idp.infn.it/utils/metadata-send.php per inviare i metadati
Dopo aver ricevuto il mail dell'avvenuta registrazione dei metadati procedere al test di configurazione. Per testare la configurazione, creare uno script di prova
mkdir /var/www/html/secure echo "<?php phpinfo(); ?>" > /var/www/html/secure/test.php
Invocare lo script all'indirizzo
https://SP-HOSTNAME/secure/test.php
Gli attributi dell'utente autenticato saranno disponibili fra le variabili d'ambiente PHP valorizzate.
Per effettuare il logout utilizzare l'indirizzo:
https://SP-HOSTNAME/Shibboleth.sso/Logout?return=
La configurazione del modulo shibboleth di apache si trova nel file /etc/httpd/conf.d/shib.conf
, la cui documentazione è alla pagina https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPhtaccess
In caso si utilizzino CMS, in particolare Joomla, si presti attenzione alle regole di riscrittura presenti nel file .htaccess
nella root directory. Alcune di queste regole impediscono l'accesso a path relativi al funzionamento di Shibboleth: ad esempio il caso del path che permette di ottenere i metadati https://SP-HOSTNAME/Shibboleth.sso/Metadata
. Quindi è necessario inserire alcune condizioni aggiuntive alla relativa regola di riscrittura, ad esempio:
RewriteCond %{REQUEST_URI} !^/index\.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/Shibboleth\.sso ### condizione riscrittura inserita RewriteCond %{REQUEST_URI} !^/secure ### condizione riscrittura inserita RewriteRule .* index.php [L]