Aller au contenu

SAML

Présentation

Le plugin SAML ajoute un nouveau point d'entrĂ©e pour l'authentification sur Squash TM. Il s'accompagne de nombreux avantages, tels qu'un service d'authentification sĂ©curisĂ© et centralisĂ©, et un service SSO. Ce plugin ne remplace pas le point d'entrĂ©e par dĂ©faut qu'est le formulaire de connexion. Les utilisateurs et administrateurs peuvent continuer d'utiliser cette interface pour s'authentifier en local s'ils le souhaitent (cette fonctionnalitĂ© peut ĂȘtre dĂ©sactivĂ©e).

Squash TM supporte SAML 2.0.

Fonctionnalités

Les fonctionnalités prises en charge sont les suivantes :

  • SSO Web ;
  • SSO initiĂ© par SP ou IdP ;
  • Profils HTTP-POST, HTTP Redirect ;
  • VĂ©rification de confiance Ă  l'aide de Metadata Interoperability ou ICP (PKIX) ;
  • Prise en charge du scoping et des contextes d'authentification ;
  • GĂ©nĂ©ration de mĂ©tadonnĂ©es SP ;
  • Publication de mĂ©tadonnĂ©es SP.

Points de Terminaison

Le plugin SAML ajoute des points de terminaison (endpoints) :

  • /auth/saml/login/{registration-id} : point d'entrĂ©e SAML pour l'authentification de l'utilisateur ;
  • /auth/saml/sso/{registration-id} : point de terminaison pour les profils SSO, Ă©galement connus sous le nom de service ACS (Assertion Consumer Service) ;
  • /auth/saml/metadata/{registration-id} : l'URI des mĂ©tadonnĂ©es ;
  • /auth/saml/SingleLogout : URL de dĂ©connexion simple.

Pour rappel, le chemin de contexte de l'application est toujours requis. Par exemple, pour le déploiement final de Squash TM, l'URL serait semblable à : http://someserver:8080/squash/auth/saml/login/google.

Limites

Le plugin SAML ne prend en charge les métadonnées que pour un seul fournisseur d'identité (IdP) et un seul SP. Pour cette raison, il n'y a pas de services de découverte d'IdP : les utilisateurs sont redirigés vers le seul IdP connu.

Intégrer Squash et le plugin SAML à son environnement

Le schéma ci-dessous illustre les acteurs et les ressources impliquées dans les interactions SAML.

Interactions

Utilisateurs : Les utilisateurs veulent avoir accÚs aux ressources détenues par le Fournisseur de service, aprÚs avoir réussi à s'authentifier auprÚs du Fournisseur d'identité.

Fournisseur d'identité : Le fournisseur d'identité (ou IdP, de l'anglais Identity Provider) détient l'annuaire des utilisateurs. C'est lui qui se charge de l'authentification des utilisateurs, et, si elle est réussie, de fournir des certificats d'authentification s'il s'agit d'un scénario SSO. Les services SAML pris en charge par l'IdP sont listés et publiés dans un fichier intitulé Métadonnées IdP qui définit quelles données seront échangées et comment elles le seront.

Fournisseur de service : Le fournisseur de services (SP, de l'anglais Service Provider) est le serveur avec lequel l'utilisateur souhaite interagir. Dans notre cas, il s'agit de Squash TM. Ce fournisseur délÚgue les problÚmes d'authentification à l'IdP, mais c'est lui qui détient les autorisations. Comme l'IdP, il publie les fonctionnalités SAML qu'il prend en charge dans des métadonnées SP.

SP/IdP Metadata : Ces fichiers publient les fonctionnalités prises en charge par le serveur qu'elles décrivent. Ils comportent les listes de point de terminaisons, de type de lien SSO préférés (HTTP-POST, redirect, etc.), d'informations attendues sur les utilisateurs (et sous quel format), de certificats utilisés pour le chiffrement, et de signatures.

À son lancement, Squash construit le fichier de mĂ©tadonnĂ©es du SP Ă  partir des propriĂ©tĂ©s du fichier de configuration et accĂšde aux mĂ©tadonnĂ©es du SP et de l'IdP. Les mĂ©tadonnĂ©es SP sont accessibles via l'URL /auth/saml/metadata/{registration-id} oĂč le registration-id est la valeur entrĂ©e dans le fichier de configuration. Les mĂ©tadonnĂ©es de l'IdP peuvent ĂȘtre rĂ©cupĂ©rĂ©es soit localement, soit Ă  distance via une connexion HTTP(S). Dans l'exemple, les mĂ©tadonnĂ©es IdP sont tĂ©lĂ©chargeables directement depuis l'IdP.

L'Ă©tape suivante est la validation des mĂ©tadonnĂ©es, qui inclut une validation syntaxique et une vĂ©rification de la signature des mĂ©tadonnĂ©es. Les certificats peuvent Ă©ventuellement ĂȘtre vĂ©rifiĂ©s, notamment au niveau de leur chaĂźne de confiance et de leur rĂ©vocation (ou il est possible de simplement assumer leur validitĂ© si la source est de confiance).

Lorsque toutes les vĂ©rifications ont Ă©tĂ© effectuĂ©es, Squash signe ces mĂ©tadonnĂ©es et les publie pour qu'elles puissent ĂȘtre utilisĂ©es par des outils tiers. C'est alors qu'il est possible de configurer l'IdP et dĂ©clarer l'instance Squash TM comme une source de demandes d'authentification valide, et lui fournir les mĂ©tadonnĂ©es SP si nĂ©cessaire.

À ce stade, le plugin est opĂ©rationnel. Squash TM interagit avec l'IdP directement ou indirectement (via le navigateur Internet de l'utilisateur), selon le profil de liens SSO choisi. Squash TM peut Ă©galement ĂȘtre configurĂ© pour fonctionner avec des serveurs mandataires (proxy) si l'un d'entre eux se trouve entre deux serveurs et qu'une communication directe est requise (non-illustrĂ©).

Utilisation

Par dĂ©faut, les utilisateurs peuvent s'authentifier sur Squash TM en utilisant soit l'interface avec le formulaire d'authentification (/login), soit l'interface SAML SSO (/auth/saml/login/{registration-id}). Chaque interface peut ĂȘtre sĂ©lectionnĂ©e en tant qu'interface principale. Par dĂ©faut, les utilisateurs seront automatiquement redirigĂ©s vers cette interface. Si un utilisateur souhaite s'authentifier en utilisant l'autre interface, il peut le faire en accĂ©dant directement Ă  son URL.

Une fois que l'utilisateur a rĂ©ussi Ă  s'identifier via SAML, le contexte utilisateur est créé. Le NameID sera le mĂȘme que l'identifiant de connexion utilisĂ© et transmis lors de l'authentification (l'identifiant est dĂ©fini dans les mĂ©tadonnĂ©es). Le compte utilisateur correspondant y sera alors liĂ©, sans quoi l'utilisateur sera authentifiĂ© mais ne pourra accĂ©der Ă  aucun projet sur Squash TM.

Un utilisateur s'étant authentifié sur Squash TM via SAML peut changer son mot de passe local sur sa page de Préférences de compte. Par ailleurs, un administrateur peut lui définir un mot de passe via la page d'administration des utilisateurs. Un utilisateur s'étant authentifié via le formulaire de connexion peut changer son mot de passe normalement. En revanche, un utilisateur ne peut pas changer son mot de passe SAML via Squash TM.

Il est possible de n'autoriser l'authentification que via l'interface SAML SSO, voir Sources d'authentification.
Dans ce cas, les utilisateurs ne peuvent pas s'authentifier avec leur compte local et ils ne peuvent pas, ou un administrateur, changer ou définir leur mot de passe local.
S'ils accÚdent à la page /login, ils sont redirigés vers l'interface SAML SSO (/auth/saml/login/{registration-id}).

Configuration

Cette partie dĂ©taille les Ă©tapes de configuration nĂ©cessaires Ă  l'installation du plugin SAML. Ici seront abordĂ©es les principales actions Ă  rĂ©aliser, ainsi que les options pouvant ĂȘtre choisies. La partie sur la configuration avancĂ©e est abordĂ©e dans la prochaine partie.

Les étapes nécessaires à l'installation du plugin sont les suivantes :

  • dĂ©ploiement du binaire ;
  • configuration de l'application ;

Déploiement du binaire

À partir du dossier $SQUASH_HOME/plugin-files/saml/, copier le fichier .jar et coller le dans le dossier du mĂȘme nom dans votre application Squash TM $SQUASH_HOME/plugins/.

Métadonnées du fournisseur de service

Le plugin SAML génÚre des métadonnées SP à partir des propriétés de configuration. Pour ce faire, il est nécessaire de fournir une clé privée au format PKCS8 et le certificat X.509. Ces deux éléments sont nécessaires pour signer les métadonnées SP et pour le chiffrement des messages SAML.

Créer une clé privée pour Squash TM

La commande suivante permet de générer une clé privée au format PKCS8 :

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private_key.pem

Exporter un certificat

Ensuite, la commande suivante permet d'exporter la clé privée sous forme de certificat valable un an (ajuster la durée si nécessaire) :

openssl req -x509 -new -key private_key.pem -sha256 -days 365 -out squashtm.cer

Ce certificat est requis pour gĂ©nĂ©rer les mĂ©tadonnĂ©es du fournisseur de services (SP). Il inclut la clĂ© publique et est partagĂ© avec le fournisseur d'identitĂ© (IdP) afin de vĂ©rifier les signatures des requĂȘtes et de chiffrer les assertions.

Configuration

Utilisation d'un fichier dédié

Le plugin SAML propose de nombreuses propriétés de configuration et le fichier de configuration est plutÎt lourd, surtout par rapport aux autres plugins de Squash TM. Il est possible de configurer le plugin en utilisant son propre fichier de configuration dédié, ou bien y faire référence dans le fichier de configuration principal plutÎt que d'y intégrer le contenu comme cela était requis pour les anciens plugins.

Pour cela, copier le fichier config/squash.tm.cfg-saml.properties et le coller dans le répertoire de configuration home. Dans la distribution de Squash TM en tant qu'application autonome, ce répertoire est en général SQUASH_HOME/conf. Puis, éditer le fichier de configuration principal SQUASH_HOME/conf/squash.tm.cfg.properties et lui associer le fichier de configuration du plugin en lui ajoutant/éditant la propriété suivante :

spring.profiles.include=saml

Si cette propriété était déjà présente, il est possible d'ajouter saml à la liste, séparé par une virgule.

(Alternative) Intégration des propriétés

Si cela est plus pratique, il est également possible de simplement copier et coller le contenu du fichier de configuration du plugin dans le fichier de configuration principal, sans avoir besoin d'ajouter SAML à la liste des profils.

Configuration minimale

Le fichier de configuration propose de nombreuses propriétés, mais seulement certaines d'entre elles sont obligatoires. Squash TM ne démarrera pas ou ne fonctionnera pas correctement si ces propriétés sont laissées vides ou ne sont pas renseignées correctement.

Les propriĂ©tĂ©s listĂ©es ci-dessous sont requises. Les dĂ©tails (valeurs autorisĂ©es, etc.) sont disponibles dans les commentaires du fichier squash.tm.cfg-saml.properties, et plus loin dans cette mĂȘme documentation.

saml.enabled : Interrupteur principal. Cette propriété permet d'activer ou de désactiver le plugin sans commentaire et sans avoir à supprimer le fichier jar.

saml.idp.metadata-url : L'emplacement des métadonnées du fournisseur d'identité (IdP). Les protocoles file://, http:// et https:// sont autorisés. Par exemple, file:///opt/squash-tm/conf/saml/FederationMetadata.xml ou https://login.microsoftonline.com/entreprise.onmicrosoft.com/FederationMetadata/2007-06/FederationMetadata.xml.

saml.sp.registration-id : Identifiant unique utilisé pour enregistrer votre fournisseur de services (SP) dans la configuration SAML du plugin. Par exemple : google.

saml.sp.entity-id : Identifiant unique de l'instance Squash. Cette valeur doit ĂȘtre unique au sein de votre Ă©cosystĂšme d'authentification et sera communiquĂ©e au fournisseur d'identitĂ© (IdP). Par exemple : urn:squash-tm:saml ou https://squash-tm.votre-entreprise.com/saml.

saml.sp.metadata.private-key : ClĂ© privĂ©e au format PKCS8 utilisĂ©e par le fournisseur de services (SP) pour signer les requĂȘtes et dĂ©chiffrer les messages.

saml.sp.metadata.certificate : Certificat X.509 du fournisseur de services (SP) utilisé pour la validation des signatures et le chiffrement.

Sources d'authentification

Par défaut, les utilisateurs peuvent s'authentifier soit avec leur compte local, soit avec leur compte SAML SSO.

Il est possible d'autoriser uniquement l'authentification avec le compte SAML SSO, grùce à la propriété suivante :

authentication.provider=saml

Configuration avancée

Le chapitre précédent présentait les préoccupations générales en ce qui concerne la configuration de Squash-SAML. Dans la plupart des cas, cette configuration devrait bien s'intégrer à l'environnement de travail. Cependant, le plugin propose plusieurs options pour une personnalisation plus poussée comme par exemple des exigences avancées pour le chiffrement RSA, ou encore pour prendre en compte l'organisation de votre réseau. Ce chapitre traite de ces options supplémentaires et revient sur quelques éléments présentés dans le chapitre précédent.

Conventions

Format des chemins de fichiers

Les mĂ©tadonnĂ©es peuvent ĂȘtre rĂ©cupĂ©rĂ©es Ă  la lecture en tant que fichiers locaux ou Ă  distance via des appels HTTP(S) en utilisant la propriĂ©tĂ© saml.idp.metadata-url.

Via HTTP(S) : le chemin du fichier est l'URL Ă  partir de laquelle il peut ĂȘtre tĂ©lĂ©chargĂ©. Le protocole est soit http://, soit https://. Exemple : https://votre.idp/metadonnees.xml

Via un chemin absolu : URL menant Ă  un fichier local qui fonctionne bien en tant que chemin absolu. Dans ce cas, le protocole est file://. Exemple : file:///dev/squashtm/saml/idp.xml (sous Linux), file://C:/dossierappli/squashtm/conf/idp.xml (sous Windows).

Via un chemin relatif vers le dossier de configuration : Tout chemin qui n'a pas de protocole défini sera considéré comme étant un chemin relatif vers le dossier de configuration. L'emplacement du dossier de configuration peut varier selon l'environnement et le mode d'installation choisi pour Squash TM. Exemple : saml/idp.xml devient $CONF_DIR/saml/idp.xml.

Propriété Espaces de noms

Les propriétés sont regroupées par des espaces de noms en relation avec les acteurs (par exemple l'IdP) ou les ressources (métadonnées). Elles sont listées sans l'espace de nom par souci de concision, et avec l'espace de nom au-dessus de la table correspondante. Ce format est pratique dans un contexte de documentation. Cependant, lors de la modification du fichier de configuration, il sera nécessaire de déclarer le nom complet de la propriété.

Point d'entrée principal

Comme dit précédemment dans le chapitre Utilisation, les utilisateurs peuvent choisir de s'identifier en utilisant l'un des deux systÚmes d'authentification (page habituelle du formulaire d'authentification ou point d'entrée SAML). Cependant, l'un de ces deux systÚmes est défini comme étant le point d'entrée principal, et si l'utilisateur n'exprime aucune préférence pour l'un des deux systÚmes, il sera redirigé vers ce point d'entrée principal lors de l'authentification.

Par dĂ©faut, Squash TM instaure la page de formulaire en tant que point d'entrĂ©e principal. Ceci peut ĂȘtre modifiĂ© dans la configuration.

Options

Espace de nom : squash.security

Propriété Commentaire
preferred-auth-url Cette propriĂ©tĂ© guide le comportement de Squash TM en matiĂšre de requĂȘtes d'utilisateurs non-identifiĂ©s.
Elle dĂ©finit l'URL vers laquelle ce type d'utilisateurs doit ĂȘtre redirigĂ©, c.-Ă -d. le point d'entrĂ©e principal.
Si cette propriété est définie par /auth/saml/login/{registration-id}, le point d'entrée principal sera SAML.
Il faut noter que cette propriété appartient à Squash TM et n'est pas spécifique au plugin SAML.
Si vous utilisez d'autres plugins d'authentification, il faut vérifier leurs configurations respectives afin d'éviter tout conflit en lien avec ce sujet.
Valeur par défaut : /login (page du formulaire d'authentification par défaut).

Traitement des métadonnées

Les mĂ©tadonnĂ©es de Squash TM (en tant que fournisseur de service) sont gĂ©nĂ©rĂ©es au dĂ©marrage de l'application et accessibles via l'URL /auth/saml/metadata/{registration-id}. Celles du fournisseur d'identitĂ© peuvent ĂȘtre rĂ©cupĂ©rĂ©es localement ou Ă  distance (voir la partie ci-dessus).
Du fait de la nature sensible de ces fichiers, leur contenu doit ĂȘtre contrĂŽlĂ© de prĂšs. Il existe deux maniĂšres d'effectuer ce contrĂŽle :

  • soit les mĂ©tadonnĂ©es sont signĂ©es, et la signature vĂ©rifiĂ©e ;
  • soit la source des mĂ©tadonnĂ©es est de confiance et vĂ©rifiĂ©e par d'autres mĂ©canismes (elles proviennent d'un serveur HTTPS ou d'un dossier trĂšs privĂ©).

Options des métadonnées SP

Espace de nom : saml.sp.metadata

Propriété Commentaire
name-id-format DĂ©finit le format du NameID utilisĂ© pour identifier l'utilisateur dans la requĂȘte d'authentification SAML. Exemples :
- urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
- urn:oasis:names:tc:SAML:2.0:nameid-format:transient
Valeur par défaut : vide
authn-requests-signed Indique si les requĂȘtes d'authentification SAML envoyĂ©es par le SP doivent ĂȘtre signĂ©es.
Valeur par défaut : false
single-logout-service-binding Définit le type de binding (protocole de transport) utilisé par le SP pour communiquer avec le Single Logout Service de l'IdP. Exemples :
- urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
- urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
Valeur par défaut : urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST

Exposition des métadonnées du Fournisseur de service

Squash TM expose les mĂ©tadonnĂ©es SP Ă  l'URL /auth/saml/metadata/{registration-id} et les signe si vous le souhaitez, sauf si elles Ă©taient dĂ©jĂ  signĂ©es (les mĂ©tadonnĂ©es ne peuvent ĂȘtre pas signĂ©es plus d'une fois).

SSO

Les options listĂ©es ici sont en relation avec le processus SSO en lui-mĂȘme. Il est possible de modifier les Ă©lĂ©ments et les conditions des Ă©changes de messages. Si les mĂ©tadonnĂ©es SP ont plusieurs alternatives pour une mĂȘme clause (telle que <NameIDFormat/>), il est Ă©galement possible d'indiquer au plugin quelle valeur devrait ĂȘtre utilisĂ©e pour cette clause au lieu de la valeur par dĂ©faut.

Dans certains cas, la valeur property doit ĂȘtre choisie parmi les spĂ©cifications SAML. Voici quelques liens utiles :

Options standard

Espace de nom : saml.sso

Propriété Commentaire
force-authN Si cette option est activée, l'utilisateur devra se réauthentifier auprÚs de l'IdP à chaque fois qu'il s'authentifie sur Squash TM. Cela garantit que l'assertion d'authentification de l'utilisateur est bien à jour. Toutefois, cela peut devenir pénible si le processus d'authentification auprÚs de l'IdP implique une interaction humaine et cela désactiverait effectivement le mécanisme SSO.
Valeur par défaut : false
provider-name Le nom lisible par un humain qui sera inclus dans les messages envoyés à l'IdP. Utile à des fins d'historique
Valeur par défaut : vide
binding Le type lien que Squash TM utilisera pour initier le SSO avec l'IdP. Ce type de lien doit ĂȘtre prĂ©sent dans les mĂ©tadonnĂ©es de l'IdP. Exemples :
- urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
- urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
En pratique, il vous faudra extraire la valeur souhaitée des métadonnées de l'IdP.
Valeur par défaut : la premiÚre méthode de binding listée dans la clause <SingleSignonService> des métadonnées de l'IdP.
assertion-consumer-index Demande Ă  l'IdP d'envoyer ses rĂ©ponses au service consommateurs donnĂ©. La liste des services consommateurs disponibles peut ĂȘtre retrouvĂ©e dans les clauses <AssertionConsumerService> des mĂ©tadonnĂ©es SP. L'ordre des services consommateurs est listĂ© avec l'attribut index au sein du libellĂ©.
Valeur par défaut : si laissée vide, la valeur par défaut sera utilisée (avec l'attribut isDefault, ou avec index=0).
nameID Le NameID qui doit ĂȘtre renvoyĂ© par l'IdP, et celui qui sera utilisĂ© pour reprĂ©senter le nom principal de l'utilisateur (son identifiant). Exemples :
- urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
- urn:oasis:names:tc:SAML:2.0:nameid-format:transient
Valeur par défaut : l'IdP choisira parmi celles spécifiées dans sa copie des métadonnées SP.
allow-create Notifie l'IdP que la création d'un nouvel utilisateur est permise lorsque celui-ci est inconnu. Notez qu'il s'agit ici de la création d'un nouvel utilisateur sur l'IdP. Squash TM ne donne que son opinion sur les actions que devrait effectuer l'IdP ; la décision finale appartient à l'IdP.
Dans tous les cas, lorsqu'un utilisateur parvient à s'identifier auprÚs de l'IdP, Squash TM lui crée un compte utilisateur si ce compte n'existe pas déjà, comme expliqué précédemment dans la partie Utilisation. La propriété ci-présente n'influe aucunement sur cette création.
Valeur par défaut : false
passive Si cette option est activĂ©e, Squash TM informera l'IdP qu'il ne considĂšre pas que l'interaction utilisateur soit nĂ©cessaire Ă  l'authentification, ce qui peut nuire Ă  l'expĂ©rience utilisateur. Notez que l'IdP peut ĂȘtre en dĂ©saccord avec cette dĂ©cision.
Valeur par défaut : false
relay-state Un token arbitraire qui sera échangé avec l'IdP. Cela fait partie des spécifications SAML, mais Squash n'en fait pas d'utilisation concrÚte. Cette propriété peut prendre toute valeur.
Valeur par défaut : vide

Scoping

L'utilisation de l'élément Scoping permet d'avoir des échanges avancés avec le SSO. Par exemple, vous pouvez demander des garanties sur la qualité de l'authentification des utilisateurs du cÎté de l'IdP (en spécifiant le contexte d'authentification) ou encore restreindre les IdPs de confiance au sein d'une architecture IdP multiniveaux.

Les propriétés suivantes seront prises en compte seulement si le scoping est activé.

Espace de nom : saml.sso (identique Ă  celui des options standard)

Propriété Commentaire
include-scoping L'interrupteur principal pour le scoping. Si la valeur est false, les autres options listées ci-dessous seront désactivées.
Valeur par défaut : false
allowed-idps Cette propriété configure la clause <IdPList>. Au sein d'une architecture IdP multiniveaux, cette liste définit les IdPs autorisés à traiter les demandes d'authentification. La valeur est une liste d'entityIDs IdP séparés par des virgules.
Valeur par défaut : vide (aucune restriction)
proxy-count Le nombre maximum de proxys autorisés pour les messages d'authentification. Dans ce contexte, un proxy est égal à un IdP au sein d'une architecture IdP multiniveaux. Une valeur égale à 0 entraßne une interdiction de l'utilisation de proxys. L'IdP qui reçoit la demande d'authentification ne peut pas la déléguer ; c'est lui qui doit identifier l'utilisateur.
Valeur par défaut : 2
authn-contexts Une liste des contextes oĂč l'authentification de l'utilisateur doit ĂȘtre prise en charge par l'IdP ; les contextes sont sĂ©parĂ©s par des virgules. Cette propriĂ©tĂ© est utile lorsque la mĂ©thode d'authentification standard n'est pas considĂ©rĂ©e comme Ă©tant suffisamment sĂ©curisĂ©e et que Squash TM demande les garanties d'un processus plus rigoureux. Exemples :
- urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI
- urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract
Valeur par défaut : vide (aucune restriction)
authn-context-comparison Les exigences supplémentaires en ce qui concerne le traitement des identifiants fournis par l'utilisateur lors de l'authentification auprÚs de l'IdP. Les valeurs autorisées sont : exact, minimum, maximum, better.
Valeur par défaut : exact.

Expiration de l'authentification

RĂ©guliĂšrement, Squash TM invalidera unilatĂ©ralement une assertion d'authentification lorsqu'elle aura dĂ©passĂ© la durĂ©e de validitĂ© entrĂ©e dans sa configuration (tout comme le Fournisseur d'identitĂ© peut lui-mĂȘme Ă©tablir une date d'expiration pour ses propres assertions d'authentification). Dans ce cas, l'utilisateur devra donc s'authentifier Ă  nouveau auprĂšs du Fournisseur d'identitĂ©. Cette expiration peut entraĂźner une perte de travail si le serveur n'a pas Ă©tĂ© en mesure de sauvegarder le travail non sauvegardĂ©. Pour cette raison, nous encourageons les utilisateurs Ă  se rĂ©authentifier par eux-mĂȘmes auprĂšs du Fournisseur d'identitĂ© lorsqu'ils le souhaitent.

Focus

L'utilisateur doit impĂ©rativement se rĂ©authentifier auprĂšs du Fournisseur d'IdentitĂ© mĂȘme lorsque sa session sur l'IdP est toujours valide car Squash rejettera l'authentification si la mĂȘme assertion est prĂ©sentĂ©e.

Options

Espace de nom : saml.session

Propriété Commentaire
max-auth-time Définit en secondes la durée de vie d'une assertion d'authentification avant que l'utilisateur doive se réauthentifier auprÚs du fournisseur d'identité (IdP) .
Valeur par défaut : 864000 (dix jours)
max-assertion-time DĂ©finit en secondes la durĂ©e de validitĂ© d'une assertion d'authentification pendant le dĂ©roulement du protocole SSO. La procĂ©dure de SSO doit ĂȘtre achevĂ©e avant ce dĂ©lai.
Valeur par défaut : 3000
clock-skew Définit en secondes la tolérance maximale acceptée pour les décalages d'horloge entre le fournisseur de services (SP) et le fournisseur d'identité (IdP).
Valeur par défaut : 300

Proxy

Si Squash TM est dĂ©ployĂ© derriĂšre un mandataire inverse (reverse proxy) ou un Ă©quilibreur de charge, les modifications appliquĂ©es Ă  vos URLs et projets peuvent conduire Ă  des diffĂ©rences entre la requĂȘte actuelle et la requĂȘte attendue. Vous pouvez dĂ©clarer ce proxy dans la configuration pour indiquer Ă  Squash TM comment effectuer ces remaniements lors des Ă©changes avec le Fournisseur d'identitĂ© (IdP).

Options

Espace de nom : saml.proxy

Propriété Commentaire
enabled L'interrupteur principal qui active le mandataire (proxy) et les options ci-dessous.
Valeur par défaut : false
server-name Le nom d'hĂŽte du mandataire inverse. Cette propriĂ©tĂ© n'a pas de valeur par dĂ©faut et doit ĂȘtre fournie.
Valeur par défaut : vide
scheme Le protocole utilisé par le mandataire inverse (reverse-proxy) pour les communications sortantes.
Valeur par défaut : https
server-port Le port utilisé par le mandataire inverse pour les communications sortantes.
Valeur par défaut : 443
context-path Le chemin de contexte de l'application, tel que servi par le mandataire inverse (reverse proxy).
Valeur par défaut : /squash
include-port-in-url Cette propriĂ©tĂ© indique si le numĂ©ro de port doit ĂȘtre explicitement inclus dans l'URL de requĂȘte (mĂȘme lorsqu'un port par dĂ©faut est utilisĂ© et qu'il pourrait donc ĂȘtre ommis).
Valeur par défaut : true

Informations Compte utilisateur

Selon la configuration du serveur IdP, les assertions en réponse aux demandes d'authentification peuvent contenir des informations supplémentaires sur le compte utilisateur. Dans le document de l'assertion, ces attributs supplémentaires sont listés sous le libellé <AttributeStatement>. Les propriétés listées ci-dessous autorisent Squash TM à utiliser ces attributs.

Veuillez noter que Squash TM ne demandera pas ces attributs via une clause Requested Attributes (voir Protocole SAML - Extension pour la demande d'attributs par requĂȘte) car cette fonctionnalitĂ© n'est pas toujours supportĂ©e et dĂ©pend de l'IdP. Au lieu de cela, vous devez vous assurer que l'IdP ajoute ces attributs Ă  l'assertion dans tous les cas.

Options

Espace de nom : saml.user-mapping

Propriété Commentaire
alternate-username Utilise la valeur de cet attribut en tant que nom d'utilisateur dans Squash TM au lieu du nameID nominal. Cela vous permet de travailler autour des limites de l'IdP si ce dernier ne peut pas vous fournir le nameIDFormat dont vous avez besoin (par ex. : d'anciennes versions d'Azure).
Valeur par défaut : aucune (fonctionnalité désactivée)
first-name DĂ©signe l'une des valeurs d'un attribut supplĂ©mentaire en tant que prĂ©nom d'un compte utilisateur dans Squash TM. Cette fonctionnalitĂ© est seulement utilisĂ©e lorsqu'un compte utilisateur est sur le point d'ĂȘtre créé dans Squash TM : les comptes utilisateurs dĂ©jĂ  existants ne seront pas mis Ă  jour de cette façon.
Valeur par défaut : aucune
last-name DĂ©signe l'une des valeurs d'un attribut supplĂ©mentaire en tant que nom de famille d'un compte utilisateur dans Squash TM. Cette fonctionnalitĂ© est seulement utilisĂ©e lorsqu'un compte utilisateur est sur le point d'ĂȘtre créé dans Squash TM : les comptes utilisateurs dĂ©jĂ  existants ne seront pas mis Ă  jour de cette façon.
Valeur par défaut : aucune
email DĂ©signe l'une des valeurs d'un attribut supplĂ©mentaire en tant qu'adresse email d'un compte utilisateur dans Squash TM. Cette fonctionnalitĂ© est seulement utilisĂ©e lorsqu'un compte utilisateur est sur le point d'ĂȘtre créé dans Squash TM : les comptes utilisateurs dĂ©jĂ  existants ne seront pas mis Ă  jour de cette façon.
Valeur par défaut : aucune

Historique

Si vous rencontrez des difficultés à utiliser SAML, vous pouvez activer une journalisation plus détaillé afin de savoir ce qui ne fonctionne pas. Pour cela, ajoutez les lignes suivantes à la configuration :

logging.level.org.squashtest.tm.plugin.saml=TRACE
logging.level.sqsaml.org.springframework.security=TRACE
logging.level.org.springframework.security.web.authentication=TRACE
logging.level.org.opensaml=TRACE

TRACE est le niveau d'historique le plus précis. Si vous trouvez cela trop verbeux, vous pouvez plutÎt utiliser le niveau DEBUG.

Focus

Squash TM doit ĂȘtre redĂ©marrĂ© afin de prendre en compte votre nouvelle configuration.