Configuration de votre IdP
- Documentation : Configuration Overviews and References, consortium Shibboleth
Nous allons réaliser une configuration minimum permettant de tester le fonctionnement de votre fournisseur d'identités Shibboleth.
Le répertoire /opt/shibboleth-idp/conf/
contient un certain nombre de fichiers de configuration, de deux types:
- les fichiers .xml sont des templates, qui utilisent des propriétés Java pour externaliser la définition de certaines valeurs
- les fichiers .properties sont des listes de couples clé/valeur, qui définissent ces valeurs
Tous les fichiers de configuration présents dans ce répertoires ne sont pas utilisés, certains ne sont là qu'à titre d'exemple. La liste exacte des fichiers XML utilisés est définie dans le fichier services.xml
, celle des fichiers de propriété dans le fichier idp.properties
.
Nous vous suggérons de garder une copie des principaux fichiers de configuration de l'IdP Shibboleth. En production, il est fortement recommandé de « versionner » ces fichiers de configuration, avec SVN par exemple.
$> cd /opt/shibboleth-idp/conf $> sudo cp -p relying-party.xml relying-party.xml.dist $> sudo cp -p attribute-resolver.xml attribute-resolver.xml.dist $> sudo cp -p attribute-filter.xml attribute-filter.xml.dist
1. Le fichier idp.properties
Il s'agit du fichier de configuration principal de Shibboleth IdP. Il reprend certain éléments de configurations présents dans le fichier relying-party.xml
utilisé dans la version 2 de l'IdP. relying-party.xml
existe toujours mais est borné aux profils SAML supportés et éventuellement personnalisé par SP.
idp.properties
est pré-configuré avec les éléments qui ont été saisis lors de l'installation. On peut y configurer les chemins vers d'autres fichiers de configuration ou clés, ou encore les durées de validités des cessions/cookies, etc.
- /opt/shibboleth-idp/conf/idp.properties
[...] # Load any additional property resources from a comma-delimited list idp.additionalProperties=/conf/ldap.properties, /conf/saml-nameid.properties, /conf/services.properties, /conf/authn/duo.properties # In most cases (and unless noted in the surrounding comments) the # commented settings in the distributed files are the default # behavior for V3. # # Uncomment them and change the value to change functionality. # Set the entityID of the IdP idp.entityID=https://mon-poste.fr/idp/shibboleth # Set the file path which backs the IdP's own metadata publishing endpoint at /shibboleth. # Set to empty value to disable and return a 404. #idp.entityID.metadataFile=%{idp.home}/metadata/idp-metadata.xml # Set the scope used in the attribute resolver for scoped attributes idp.scope=univ-test.fr # General cookie properties (maxAge only applies to persistent cookies) # Note the default for idp.cookie.secure, you will usually want it set. #idp.cookie.secure = false #idp.cookie.httpOnly = true #idp.cookie.domain = #idp.cookie.path = #idp.cookie.maxAge = 31536000 # HSTS/CSP response headers #idp.hsts = max-age=0 # X-Frame-Options value, set to DENY or SAMEORIGIN to block framing #idp.frameoptions = DENY # Content-Security-Policy value, set to match X-Frame-Options default #idp.csp = frame-ancestors 'none'; # Set the location of user-supplied web flow definitions #idp.webflows = %{idp.home}/flows # Set the location of Velocity view templates #idp.views = %{idp.home}/views # Settings for internal AES encryption key #idp.sealer.storeType = JCEKS #idp.sealer.updateInterval = PT15M #idp.sealer.aliasBase = secret idp.sealer.storeResource=%{idp.home}/credentials/sealer.jks idp.sealer.versionResource=%{idp.home}/credentials/sealer.kver [...] # Size of session IDs #idp.session.idSize = 32 # Bind sessions to IP addresses #idp.session.consistentAddress = true # Inactivity timeout #idp.session.timeout = PT60M # Extra time to store sessions for logout #idp.session.slop = PT0S # Tolerate storage-related errors #idp.session.maskStorageFailure = false # Track information about SPs logged into #idp.session.trackSPSessions = false # Support lookup by SP for SAML logout #idp.session.secondaryServiceIndex = false # Length of time to track SP sessions #idp.session.defaultSPlifetime = PT2H [...]
La majorité des configurations par défaut sont satisfaisantes et n'auront pas à être modifiées.
2. Utilisation de SAML1
La configuration par défaut de l'IdP Shibboleth ne prévoit pas la transmission des attributs utilisateurs dans la réponse SAML1 de l'IdP à un SP. Cette configuration par défaut nécessite la mise en place d'un point d'accès SOAP de type Attribute Authority lourd à mettre en oeuvre.
La modification ci-dessous permet de configurer l'IdP pour inclure les attributs utilisateurs directement dans la réponse SAML1. Ce mode de fonctionnement est obligatoire dans le cadre de la fédération Éducation-Recherche si vous utilisez SAML1.
- /opt/shibboleth-idp/conf/relying-party.xml
<bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty"> <property name="profileConfigurations"> <list> ** <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" p:includeAttributeStatement="true"** /> <ref bean="SAML1.AttributeQuery" /> <ref bean="SAML1.ArtifactResolution" /> <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" /> <ref bean="SAML2.ECP" /> <ref bean="SAML2.Logout" /> <ref bean="SAML2.AttributeQuery" /> <ref bean="SAML2.ArtifactResolution" /> <ref bean="Liberty.SSOS" /> </list> </property> </bean>
Suite à cette mise à jour, il est nécessaire de redémarrer l'IDP :
$> sudo systemctl stop tomcat $> sudo systemctl start tomcat
- /opt/shibboleth-idp/conf/idp.properties
- /opt/shibboleth-idp/conf/relying-party.xml