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

  <MetadataProvider type="XML" path="idp.infn.it-metadata.xml"/>
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
# curl -o /etc/shibboleth/attribute-map.xml https://wiki.infn.it/_media/cn/ccr/aai/howto/attribute-map.xml
#  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 "<?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]