====== 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"'' con ''signing="true"''
* Sostituire ''https://idp.example.org/idp/shibboleth'' con ''https://idp.infn.it/saml2/idp/metadata.php'' oppure con ''https://idp.infn.it/testing/saml2/idp/metadata.php'' per l'IdP di test.
* Impostare ''handlerSSL="true"'' e ''cookieProps="https"''
* Prima del tag ''
* 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
https://boweb.bo.infn.it/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 "" > /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]