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.orgcon l'hostname del SP - Sostituire tutte le occorrenze di
signing="false"consigning="true" - Sostituire
https://idp.example.org/idp/shibbolethconhttps://idp.infn.it/saml2/idp/metadata.phpoppure conhttps://idp.infn.it/testing/saml2/idp/metadata.phpper 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]
