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 Web avec un profil holder-of-key ;
  • SSO initiĂ© par SP ou IDP ;
  • Profils HTTP-POST, HTTP Redirect, SOAP, PAOS et Artifact Binding ;
  • VĂ©rification de confiance Ă  l'aide de Metadata Interoperability ou ICP (PKIX) ;
  • Prise en charge du scoping et des contextes d'authentification ;
  • Publication de mĂ©tadonnĂ©es SP.

Points de Terminaison

Le plugin SAML présente de nouveaux point de terminaison :

  • /auth/saml/login : point d'entrĂ©e SAML pour l'authentification de l'utilisateur ;
  • /auth/saml/SSO : points de terminaison pour les profils SSO, Ă©galement connus sous le nom de service ACS (Assertion Consumer Service) ;
  • /auth/saml/SSOHoK : point de terminaison pour le profil SSO Holder-of-Key ;
  • /auth/saml/metadata : 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.

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. Le plugin ne comporte pas d'outils intégrés pour la génération de métadonnées SP. Pour cela, il faudra utiliser des outils tiers.

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.

Keystore : Le plugin SAML utilise son propre keystore, qui est un keystore JKS (PKCS#12) qui se distingue du keystore JVM. Ce keystore contient d'une part les clés privées pour l'utilisation de Squash TM et d'autre part les clés publiques pour l'utilisation de tous les autres outils tiers : IDPs, proxys (offloading SSL), etc. Il contient également le certificat racine et l'autorité de certification nécessaire à la vérification des clefs publiques.

À son lancement, Squash accĂšde d'abord au keystore et aux mĂ©tadonnĂ©es SP et IDP. Les mĂ©tadonnĂ©es SP et IDP peuvent toutes deux ĂȘtre rĂ©cupĂ©rĂ©es soit localement ou soit Ă  distance via une connexion HTTP(S). Dans l'exemple, les mĂ©tadonnĂ©es SP sont disponibles localement tandis que les mĂ©tadonnĂ©es IDP sont tĂ©lĂ©chargeables directement depuis l'IDP. Quant au keystore, il n'est accessible que localement. L'idĂ©al est d'avoir le keystore et les mĂ©tadonnĂ©es sur la mĂȘme machine.

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). 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).

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 ;
  • crĂ©ation du keystore et des mĂ©tadonnĂ©es SP ;
  • configuration de l'application.

DĂ©ploiement du binaire

À partir du paquet .zip contenant le plugin, copier le fichier .jar du dossiers plugins et coller le dans dossier du mĂȘme nom dans votre application Squash TM $SQUASH_HOME/plugins/.

Création d'un keystore

Le plugin SAML utilise son propre keystore, qui centralise tout le matĂ©riel de chiffrement utilisĂ© dans les cas d'utilisation SAML1. Le keystore doit contenir au moins un couple clĂ© publique / clĂ© privĂ©e pour Squash TM. Selon les besoins de l'ICP, les certificats des outils tiers et/ou de CA intermĂ©diaires et racines peuvent ĂȘtre utilisĂ©s.

Pour créer ce keystore, il vous faut le keytool qui vient avec le JDK (c.-à-d $JAVA_HOME/bin/keytool). Dans cette partie, nous allons partons du principe que votre Java est de type Oracle Hotspot. Pour accéder à la documentation complÚte, rendez-vous sur Documentation Oracle Keytool.

Info

Les alias des clĂ©s de certificats Ă  installer ou crĂ©er ne doivent ni ĂȘtre vides, ni contenir d'espace. Ils doivent contenir une succession de lettres ou chiffres, et peuvent contenir des traits d'union ou des underscores en tant que sĂ©parateurs. En rĂ©sumĂ©, ils peuvent contenir : [a-zA-Z0-9-]+.

Créer un couple clé publique / clé privée pour Squash TM

La commande suivante permet de crĂ©er un couple de clĂ©s RSA pour Squash ℱ avec l'algorithme de signature SHA256withRSA valable un an :

keytool -genkeypair -keyalg rsa -keysize 2048 -sigalg SHA256withRSA -alias squashtm -keystore keystore.jks -validity 365

oĂč squashtm est l'alias de la clĂ© et keystore.jks est le nom du keystore. S'il n'existe pas dĂ©jĂ , le keystore sera crĂ©Ă© dans la foulĂ©e et dans ce cas, vous devrez rĂ©pondre aux questions nĂ©cessaires Ă  sa crĂ©ation. Veillez Ă  bien noter les mots de passe pour le keystore et la clĂ©.

Info

Il est possible de définir plus d'un couple de clés. Le plugin permet l'utilisation de différentes clés pour différents usages (par exemple, la signature et le chiffrement).

À ce stade, le certificat associĂ© est toujours autosignĂ©. AprĂšs vĂ©rification, il est possible Exporter un certificat.

En cas de besoin de la permission d'une autorité de certification (CA),il est possible d'émettre une nouvelle demande de signature de certificat (CSR) avec la commande suivante :

keytool -certreq -alias squashtm -keystore keystore.jks -file squashtm-csr.csr

Puis, transférer cette demande à l'autorité compétente. Une fois que la demande est traitée, installer le certificat signé comme indiqué dans Importer un certificat.

Facultatif (Installer une clé privée externe)

Si la clĂ© privĂ©e devant ĂȘtre utilisĂ©e par Squash TM a Ă©tĂ© gĂ©nĂ©rĂ©e ailleurs, il faut l'importer. La clĂ© doit ĂȘtre un fichier .p12 ou .pfx.

keytool -importkeystore \
    -srckeystore imported.p12 -srcstoretype PKCS12 -srcstorepass imported_pass \
    -srcalias key -srckeypass key_pass \
    –destkeystore keystore.jks -deststorepass dest_store_pwd \
    -destalias squashtm -destkeypass squashtmpassword

Exporter un certificat

Il est possible d'exporter un certificat Ă  partir du keystore en utilisant la commande suivante :

keytool -export -rfc -keystore keystore.jks -alias squashtm -file squashtm.cer

La plupart du temps, cela est nécessaire pour générer des métadonnées SP (voir ci-dessous) pour que Squash puisse les utiliser en tant que certificat lors d'une signature ou d'un chiffrement. L'option -rfc permet de générer le certificat au format PEM (un fichier encodé en base64 de texte simple dont il est possible de copier/coller le contenu).

Importer un certificat

Les certificats de tiers peuvent ĂȘtre importĂ©s en tant que fichiers .cer/.crt, notamment des certificats intermĂ©diaires et racines, ou encore un certificat signĂ© par une autoritĂ© de certification si vous en avez une. Cela fonctionne aussi pour les certificats PCKS#7 (fichiers .p7b).

keytool -importcert -alias certname -file certificate.cer -keystore keystore.jks

Métadonnées de fournisseurs de service

Le plugin SAML n'embarque pas de programme utilitaire de Métadonnées de Fournisseurs de service. Il faudra les générer en utilisant des outils externes. Il est aussi possible d'éditer celui fourni en exemple.

Configuration de base

L'exemple qui suit utilise l'outil en ligne Onelogin, qui offre les options de base pour la génération de métadonnées. Cet outil permet de fournir un modÚle qui pourra servir de base par la suite : changement de service consommateur d'assertion, ajout de formats de noms d'IDs, etc.

Voici un formulaire simple de génération de métadonnées SP :

Formulaire simple de génération

Dans l'exemple, nous avons fourni les informations suivantes :

  • EntityID : l'identifiant de l'instance Squash ; doit ĂȘtre unique parmi tous les fournisseurs de service connus par l'IDP ;
  • Consumer Service endpoint : le point de terminaison oĂč tous les messages liĂ©s au SSO (assertions) doivent ĂȘtre envoyĂ©s. Le chemin de ce point de terminaison est /auth/saml/SSO ;
  • Single Logout Service endpoint : le point de terminaison oĂč l'IDP peut initier une dĂ©connexion Ă  distance. Le chemin de ce point de terminaison est /auth/saml/SingleLogout ;
  • NameID format : le format prĂ©fĂ©rĂ© pour les noms d'utilisateur ;
  • SP X.509 Cert (pour la signature et le chiffrement) : le certificat Squash TM pouvant ĂȘtre obtenu comme expliquĂ© dans Exporter un certificat.

Il n'est pas nécessaire de remplir les autres données.

Il est maintenant possible de cliquer sur le bouton [Build SP METADATA] au bas de la page et obtenir les mĂ©tadonnĂ©es dans un document XML. Les services SAML publiĂ©s sont minimes mais fonctionnels et peuvent ĂȘtre utilisĂ©s dans la plupart des environnements.

Focus

Ces outils offrent également la possibilité de signer les métadonnées en leur fournissant une clé publique et une clé privée. Il n'est pas recommandé de faire cela dans l'immédiat car :

  • cela implique d'envoyer une clĂ© privĂ©e depuis Internet ;
  • il n'est pas possible de changer les mĂ©tadonnĂ©es sauf si l'utilisateur les re-signe aprĂšs les avoir modifiĂ©es ;
  • Squash TM peut les re-signer lors de son exĂ©cution avant de les exposer publiquement.

Configuration avancée

L'outil présenté ci-dessus a des limites. Par exemple, il est obligatoire d'utiliser le profil de liaison HTTP-POST pour le point de terminaison SSO. Les détails sur des métadonnées SAML plus précises sont en dehors du périmÚtre de cette documentation. En cas de besoin pour produire un fichier de métadonnées plus spécifique, voici quelques détails qui pourraient apporter plus de précisions :

  • la liste des points de terminaisons est donnĂ©e dans Points de terminaison ;
  • le NameID est le nom de l'identifiant de connexion dans Squash TM ;
  • Squash TM ne vĂ©rifie pas d'informations complĂ©mentaires (adresse email
) en plus du nom (<RequestedAttribute\> ignorĂ©s).

En savoir plus

Pour plus d'informations, consulter la page Spécifications SAML.

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 coller-le 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 associer-lui 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 / 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é. Les protocoles file://, http:// et https:// sont autorisés ;

saml.sp.metadata.url : l'emplacement des métadonnées du Fournisseur de service. Les protocoles file://, http:// et https:// sont autorisés ;

saml.keystore.url : l'emplacement du keystore. Seul le protocole file:// est autorisé ;

saml.keystore.password : le mot de passe du keystore ;

saml.keystore.credentials.<?> : l'alias d'un couple clĂ© publique / clĂ© privĂ©e pour les besoins de Squash TM en terme de chiffrement. Le point d'interrogation ? reprĂ©sente un alias. La valeur de la propriĂ©tĂ© est le mot de passe de cette clĂ©. Cette propriĂ©tĂ© peut ĂȘtre rĂ©pĂ©tĂ©e une fois pour chaque clĂ© ;

saml.keystore.default-key : l'alias de la clĂ© que Squash TM doit utiliser Ă  chaque fois qu'une clĂ© privĂ©e est requise, sauf si une autre clĂ© est spĂ©cifiĂ©e pour cette situation dans le fichier de configuration. La clĂ© par dĂ©faut doit Ă©videmment ĂȘtre prĂ©sente dans la liste des identifiants.

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

Autres actions

L'instance de Squash TM doit ĂȘtre enregistrĂ©e auprĂšs de l'IdP avec les mĂ©tadonnĂ©es SP pour dĂ©buter la relation de confiance. Les dĂ©tails de cette Ă©tape dĂ©pendent de votre fournisseur SAML ; veuillez vous rĂ©fĂ©rer Ă  sa documentation dĂ©diĂ©e.

Exemple de disposition de la configuration

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.

Info

Si certaines choses vous semblent peu claires, vous pourrez trouver des indices utiles dans les Appendices.

Conventions

Format des chemins de fichiers

Les mĂ©tadonnĂ©es et le keystore peuvent ĂȘtre rĂ©cupĂ©rĂ©s Ă  la lecture en tant que fichiers locaux ou Ă  distance via des appels HTTP(S) en utilisant les propriĂ©tĂ©s saml.idp.metadata.url, saml.sp.metadata.url et saml.keystore.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.

Ancres de confiance

Dans certains cas, il faudra dĂ©finir quels certificats parmi ceux prĂ©sents dans le keystore doivent ĂȘtre considĂ©rĂ©s comme des ancres de confiance. Parmi ces cas, on trouve la validation de mĂ©tadonnĂ©es SP, la validation de mĂ©tadonnĂ©es IDP, et les messages IDP entrants.

Lorsque une propriété (généralement nommée .trusted-keys) est rencontrée, les valeurs suivantes sont acceptées :

  • all : Tous les certificats du keystore sont considĂ©rĂ©s comme des ancres de confiance ;
  • (blank) : Si aucune valeur n'est spĂ©cifiĂ©e, on admettra la valeur all ;
  • none : Aucun certificat du keystore ne sera considĂ©rĂ© comme une ancre de confiance. Dans ce cas, les certificats doivent ĂȘtre validĂ©s par une autoritĂ© de certification du keystore de la JVM ;
  • une liste sĂ©parĂ©e par des virgules : La liste explicite des clĂ©s du keystore, sĂ©parĂ©es par une virgule , Ă  savoir :
    context.trusted-keys = anchor1, anchor2, anchor3
    

Il est Ă©vident que si vous n'avez besoin que d'une seule ancre, il serait sage de ne pas la nommer all ou none.

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 outrepassĂ© 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'utilisateur 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, 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) et 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Ă©).

Focus

Dans le cas oĂč vous choisiriez de rĂ©cupĂ©rer les mĂ©tadonnĂ©es via une connexion https, la chaĂźne TLS est soutenue par le keystore de la JVM ou le keystore Java par dĂ©faut. C'est la seule exception au paradigme du keystore dĂ©diĂ© aux plugins (voir Keystore). Si le fournisseur de mĂ©tadonnĂ©es a un certificat distinct, veuillez vous assurer qu'il est installĂ© dans le keystore par dĂ©faut. Nous nous excusons pour cette divergence par rapport au canon de ce plugin.

Options des métadonnées IDP

Espace de nom : saml.idp.metadata

Propriété Commentaire
url (requise) L'URL oĂč se trouvent les mĂ©tadonnĂ©es. Elle respecte les conventions indiquĂ©es dans la partie Formats de chemins de fichiers.
Valeur par défaut : non applicable
require-signature Indique si Squash TM n'accepte que des métadonnées signées. Si la valeur indiquée est true, les métadonnées non-signées seront refusées.
Valeur par défaut : false
check-signature Si les mĂ©tadonnĂ©es sont signĂ©es, la signature sera vĂ©rifiĂ©e. Cela implique une vĂ©rification du digest des mĂ©tadonnĂ©es et de la confiance pouvant ĂȘtre accordĂ©e au certificat. Ce comportement est indĂ©pendant de la propriĂ©tĂ© prĂ©cĂ©dente (ci-dessus). Si les mĂ©tadonnĂ©es ne sont pas signĂ©es, cette propriĂ©tĂ© ne prendra pas effet.
Valeur par défaut : true
check-certificate-revocation Si la signature des mĂ©tadonnĂ©es est conforme, il faut choisir s'il faut Ă©galement vĂ©rifier la rĂ©vocation du certificat. Veuillez noter que cela active simplement ce comportement et que le mĂ©canisme spĂ©cifique qui lui est liĂ© (CLR, OSCP) ne peut pas ĂȘtre configurĂ© ici. Étant donnĂ© que nous nous appuyons sur le fournisseur JCE de votre JDK, cette configuration dĂ©pend des propriĂ©tĂ©s systĂšme et de la configuration du keystore Ă  ce sujet (en ce qui concerne SUN JCE).
Veuillez noter que les points de terminaisons ajoutées au keystore manuellement seront respectées dans tous les cas.
Valeur par défaut : false
trusted-keys Parmi tous les certificats installés dans le keystore, cette propriété définit lesquels d'entre eux seront considérés en tant qu'ancres de confiance. Le format est défini dans la partie Ancres de confiance.
Valeur par défaut : all

Options des métadonnées SP

Les options de mĂ©tadonnĂ©es SP sont exactement les mĂȘmes que celles des mĂ©tadonnĂ©es IP ci-dessus, avec comme espace de nom : saml.sp.metadata

Exposition des métadonnées du Fournisseur de service

Squash TM expose les mĂ©tadonnĂ©es SP Ă  l'URL /auth/saml/metadata 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)

Les algorithmes impliquĂ©s dans la signature sont dĂ©finis dans les standards de sĂ©curitĂ© SpĂ©cifications XML-Security. Il faut noter que l'URI complĂšte doit ĂȘtre prĂ©cisĂ©e, et que l'algorithme doit ĂȘtre compatible avec le fournisseur JCE de votre JDK. La clĂ© privĂ©e utilisĂ©e dans ce cas est dĂ©finie Ă  un autre emplacement, voir la propriĂ©tĂ© property saml.sp.signing-key.

Options

Espace de nom : saml.sp.metadata-exposition

Propriété Commentaires
signed Les métadonnées exposées seront signées par Squash TM. Cependant, si les métadonnées étaient déjà signées, la signature originale sera conservée.
Valeur par défaut : false
signing-algorithm L'algorithme pour la signature des métadonnées. Exemples :
- http://www.w3.org/2000/09/xmldsig#rsa-sha1
- http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
Valeur par défaut : si laissée vide, l'algorithme associé à la clé est déterminé par saml.sp.signing-key
digest-algorithm L'algorithme pour la génération du digest. Exemples :
- http://www.w3.org/2000/09/xmldsig#sha1
- http://www.w3.org/2001/04/xmldsig-more#sha224
Valeur par défaut : si laissée vide, http://www.w3.org/2000/09/xmldsig#sha1

Keystore

Info

Toutes les propriétés de cette partie ont déjà été présentées dans la partie Configuration minimale. Elles sont présentées de nouveau ici par souci de complétude.

En ce qui concerne Squash TM, le keystore est le centre de l'ICP. Le plugin SAML utilise un keystore qui lui est dédié en plus de celui de la JVM. Les opérations de chiffrement impliquées dans les cas d'utilisation de SAML sont soutenues par son keystore dédié, à la seule exception du téléchargement de métadonnées avec une connexion TLS (voir Traitement des métadonnées). Parmi les cas d'utilisation, on trouve : le chiffrement, le déchiffrement, la signature et la vérification, la validation du certificat, et éventuellement la connexion TLS directe entre les deux parties.

Le keystore doit contenir les certificats des CA intermĂ©diaires et racines qui garantissent la signature des certificats, ainsi que les certificats auto-signĂ©s. Il doit Ă©galement contenir au moins une paire de clĂ©s pour une utilisation par Squash TM. Plusieurs paires de clĂ©s peuvent Ă©galement ĂȘtre dĂ©finies, chacune pour une utilisation distincte (facultatif ; voir Messages du Fournisseur de services).

Options

Toutes les options listées ci-dessous sont requises.

Espace de nom : saml.keystore

Propriété Commentaire
url L'URL à partir de laquelle on peut avoir accÚs au keystore. Elle respecte les conventions décrites dans la partie Formats de chemins de fichiers, avec pour restriction le seul support de file:// ou des formats de chemin relatifs.
Valeur par défaut : non applicable
password Le mot de passe qui donne accĂšs au keystore.
Valeur par défaut : not applicable.
credentials.<?> La liste de toutes les clĂ©s alias/mot de passe pour les couples de clĂ©s publique/privĂ©e dont Squash TM a besoin pour la signature, le chiffrement, ou l'initiation de connexions TLS. Dans ce format, le point d'interrogation reprĂ©sente <?> l'alias. La valeur est le mot de passe. Au moins une clĂ© doit ĂȘtre dĂ©clarĂ©e de cette façon. Cette propriĂ©tĂ© peut ĂȘtre dĂ©clarĂ©e plusieurs fois (une fois par clĂ©)
Les alias de clĂ©s doivent sagement ĂȘtre nommĂ©s afin que la propriĂ©tĂ© ne soit pas mal interprĂ©tĂ©e. Ils ne doivent contenir que des lettres, chiffres, tirets et underscore, et ils ne doivent pas contenir d'espace ( [a-zA-Z0-9-_]+ ).
Exemple : saml.keystore.identifiants.clé = mot de passe
Valeur par défaut : non applicable
default-key La clé par défaut utilisée par Squash TM lorsqu'il a besoin d'une clé privée pour l'accomplissement d'une tùche, sauf si une clé spécifique a été configurée pour cette tùche (par ex. saml.sp.signing-key).
Valeur par défaut : non applicable

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 ), 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. 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 demeure avec 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 (naturellement) ĂȘ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 qui doit ĂȘtre prise en charge par l'IDP, oĂč 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 ou valeurs possibles :
- 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

Messages du Fournisseur de service

Les métadonnées SP décrivent la plus grande partie du comportement de Squash TM dans un contexte SAML. Les propriétés suivantes permettent de compléter les métadonnées ou d'en changer une partie. Par exemple, il es possible de changer le NameIDFormat souhaité sans toucher aux métadonnées.

Plusieurs des options suivantes concernent l'utilisation de clés privées. Lorsqu'elle n'est pas définie, la clé par défaut sera celle du keystore (voir la partie Keystore).

Options

Espace de nom : saml.sp

Propriété Commentaire
signing-key Si la clé de signature est différente de la clé par défaut, cette propriété indique l'alias de la clé SP privée pour la signature des messages SAML sortants.
Valeur par défaut : non définie, et dans ce cas il s'agira de la clé par défaut
encryption-key Si la clé de chiffrement est différente de la clé par défaut, cette propriété indique l'alias de la clé SP privée pour le déchiffrement des messages SAML entrants.
Valeur par défaut : non définie, et dans ce cas il s'agira de la clé par défaut
tls-key Si une connexion HTTPS directe est requise (par ex. HTTP-Artifact) et que Squash TM en tant que client doit s'authentifier avec un certificat, cette propriété indique l'alias de la clé SP privée à utiliser.
Valeur par défaut : non définie, et dans ce cas il s'agira de la clé par défaut
require-logout-request-signed Si l'IDP initie une dĂ©connexion, cette propriĂ©tĂ© indique que de telles demandes doivent ĂȘtre signĂ©es pour Squash TM
Valeur par défaut : true
require-logout-response-signed Si Squash TM initie une dĂ©connexion, cette propriĂ©tĂ© indique que la rĂ©ponse Ă  cette demande de dĂ©connexion doit ĂȘtre signĂ©e.
Valeur par défaut : false
signature-security-profile La politique de vérification de signatures. Les valeurs autorisées sont metaiop ou pkix, veuillez vous référer à la partie Certificats pour plus de détails sur cette politique.
Valeur par défaut : metaiop
ssl-security-profile La politique de vérification des certificats SSL/TLS lorsqu'une connexion HTTPS directe est requise. Les valeurs autorisées sont metaiop ou pkix, veuillez vous référer à la partie Certificats pour plus de détails sur cette politique.
Valeur par défaut : pkix
ssl-hostname-verification Dans le cas d'une connexion HTTPS directe, il peut y avoir une vérification du nom d'hÎte en plus de la vérification des certificats. Les valeurs autorisées sont : default, defaultAndLocalhost, strict ou allowAll. Veuillez noter que la valeur allowAll désactive la vérification du nom d'hÎte.
Valeur par défaut : default

Messages du Fournisseur d'identité

Le traitement des messages envoyĂ©s par le Fournisseur d'identitĂ© se fait principalement grĂące aux mĂ©tadonnĂ©es IDP connues par Squash. Cependant, il se peut que les mĂ©tadonnĂ©es soient incomplĂštes, ou qu'elles doivent ĂȘtre changĂ©es provisoirement. Par exemple, dans le cas oĂč un IDP a signĂ© son message, mais qu'aucun certificat pour l'utilisation de la signature n'est spĂ©cifiĂ© dans les mĂ©tadonnĂ©es, vous pouvez fournir l'information manquante en dĂ©finissant la propriĂ©tĂ© saml.idp.signing-key.

Outre l'ajustement du traitement des messages entrants, les propriétés suivantes vous permettent également d'autres caractéristiques de l'IDP, telles que le contenu des messages sortants de Squash TM.

Options

Espace de nom : saml.idp

Propriété Commentaire
signing-key La clé pour vérifier la signature d'un message entrant de l'IDP.
Valeur par défaut : le certificat à usage des signatures spécifié dans les métadonnées de l'IDP
encryption-key La clé pour chiffrer les messages sortants vers l'IDP.
Valeur par défaut : le certificat avec l'utilisation de la signature spécifiée dans les métadonnées de l'IDP.
trusted-keys Si Squash TM doit faire une vérification PKIX sur les Certificats des messages entrants, cette propriété définit les clés qui seront considérées comme des ancres de confiance. Le format est défini dans la partie Ancres de confiance.
Valeur par défaut : all
require-logout-request-signed Indique qu'il est nĂ©cessaire pour l'IDP que toute demande de dĂ©connexion initiĂ©e par le SP soit signĂ©e, mĂȘme lorsque ce dernier est Squash TM.
Valeur par défaut : true
require-logout-response-signed Indique qu'il est nécessaire pour l'IDP que toutes les réponses aux demandes de déconnexion initiées par l'IDP soient signées.
Valeur par défaut : false
require-artifact-resolve-signed Si cette option est activée, les messages de résolution HTTP-Artifact seront signés.
Valeur par défaut : true
allow-idp-initiated-sso Cette propriété indique si l'IDP est autorisé à initier un SSO. Squash TM peut toujours initier le SSO comme d'habitude.
Valeur par défaut : true

Options de connexion directe

Si le profil HTTP-Artifact est activĂ©e pour les conversations SSO, une connexion directe entre Squash TM et le fournisseur d'identitĂ© sera nĂ©cessaire pour la rĂ©solution de l'artifact. Dans le cas oĂč un proxy se trouve entre les deux serveurs, vous pouvez configurer l'information relative Ă  ce proxy avec les propriĂ©tĂ©s suivantes.

Espace de nom : saml.idp (mĂȘme espace de nom que pour les options standard)

Propriété Commentaire
proxy-host L'hÎte du proxy. Cette propriété active les propriétés suivantes.
Valeur par défaut : non définie
proxy-port Le port du proxy.
Valeur par défaut : 8080
basic-username Si l'IDP demande une authentification Basic Auth, cette propriété indique le nom d'utilisateur à utiliser.
Valeur par défaut : vide
basic-password Le mot de passe pour les challenges Basic-Authentication.
Valeur par défaut : vide

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 leur 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é.
Valeur par défaut : 864000 (environ dix jours)

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 entrer ce proxy dans la configuration pour indiquer Ă  Squash TM comment justifier ces remaniements lors des Ă©changes de messages avec le Fournisseur d'identitĂ© (IDP).

Options

Espace de nom : saml.proxy

Property Comments
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.
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Ă©Ă© (nouvel utilisateur) : 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Ă©Ă© (nouvel utilisateur) : 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Ă©Ă© (nouvel utilisateur) : 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.

Appendice

À propos de la cryptographie

Ce chapitre aborde briÚvement quelques concepts utilisés dans un scénario SAML. Il tente de clarifier quelques détails pour le lecteur non-familier avec SAML. Cette partie restera concise car le but n'est pas d'expliquer en détails ces mécanismes, mais plutÎt d'expliciter à quoi réfÚrent les options listées dans les chapitres précédents.

Utilisation

Les données échangées entre les acteurs de conversations SSO font un usage important de matériel cryptographique. Les buts sont d'assurer que :

  1. Le contenu des messages reste inaccessible aux parties non-désirées ;
  2. Le contenu n'a pas été altéré ;
  3. Le contenu soit envoyé de l'origine voulue ;
  4. L'origine voulue soit bien celle qu'elle prĂ©tend ĂȘtre.

La premiĂšre prĂ©occupation de la liste est couverte par le chiffrement, qui rend les donnĂ©es indĂ©chiffrables, sauf par le destinataire du message. La deuxiĂšme prĂ©occupation est couverte par la signature du contenu, un condensĂ© (digest) chiffrĂ© du contenu qui peut ĂȘtre comparĂ© avec le message reçu pour la dĂ©tection d'erreurs. La troisiĂšme prĂ©occupation est couverte par le certificat de l'expĂ©diteur, qui lie l'identitĂ© de l'expĂ©diteur Ă  la clĂ© qui a gĂ©nĂ©rĂ© la signature. La quatriĂšme prĂ©occupation est couverte par la validation du chemin de certificat, qui Ă©tablit une chaĂźne de confiance entre le certificat et l'autoritĂ© de certification.

Couples clé publique / clé privée

Le chiffrement et la signature sont basés sur l'utilisation de couples de clé publique / clé privée, qui sont utilisés dans des rÎles quelque peu (mais pas tout à fait) symétriques. La clé publique est contenue dans un certificat indiquant son propriétaire, puis elle est publiée à toute personne intéressée. D'autre part, la clé privée correspondante, n'est connue que de son propriétaire. Chaque serveur impliqué, dans notre cas il s'agit de Squash TM et du Fournisseur d'identité, possÚde un ou plusieurs couples de clés et certificats de ce type.

Chiffrement

Pour chiffrer un message, l'expéditeur applique un algorithme de chiffrement sur le message avec la clé publique du destinataire.

Une fois chiffrĂ©, le destinataire peut rĂ©cupĂ©rer le contenu original en utilisant sa clĂ© privĂ©e de destinataire. Étant donnĂ© qu'il est le seul dĂ©tenteur de cette clĂ© privĂ©e, il est le seul Ă  pouvoir accĂ©der Ă  ce contenu.

Signature

Pour signer un message, l'expéditeur génÚre d'abord un digest du message avec d'un algorithme de digest. Le résultat est ensuite chiffré à l'aide d'un algorithme de chiffrement avec la clé privée de l'expéditeur et le résultat est joint au message signé.

Le destinataire peut ensuite vĂ©rifier la signature. Pour cela, il dĂ©chiffre d'abord la signature avec la clĂ© publique de l'expĂ©diteur. Puis, il applique le mĂȘme algorithme de digest au message reçu. Enfin, les deux digests sont comparĂ©s. S'ils correspondent parfaitement, on peut conclure que :

  • quel que soit l'expĂ©diteur, celui-ci est bien le propriĂ©taire de la clĂ© privĂ©e ;
  • le message provient bien du bon expĂ©diteur, tel que dĂ©clarĂ© dans le certificat liĂ© Ă  la clĂ© publique correspondante ;
  • aucun tiers n'a altĂ©rĂ© le message aprĂšs signature, car les deux digests correspondent.

Info

Dû à la relation étroite entre une clé publique et un certificat, ces deux termes sont souvent employés de façon peu rigoureuse. Mais cette confusion est en général inoffensive et elle est également faite au sein de ce document.

Certificats

La premiÚre mission d'un certificat est de lier une identité à une clé publique. Le format de certificat standard dans le monde Java est X.509. Il contient de nombreuses informations, notamment :

  • la clĂ© publique ;
  • l'identitĂ© (plus qu'un nom, il s'agit d'une collection d'informations sur le sujet) ;
  • les moyens de vĂ©rifier l'AutoritĂ© de certification elle-mĂȘme (dans les versions rĂ©centes du format) ;
  • la pĂ©riode de validitĂ© du certificat ;
  • etc.

Cette liste n'est pas exhaustive. Si cela vous intéresse, vous pouvez trouver plus d'informations sur ce sujet sur Internet.

Étant donnĂ© qu'un certificat dĂ©tient une clĂ© publique et une identitĂ©, il permet Ă  la fois la vĂ©rification de signatures, d'identitĂ©, ou des deux. La vĂ©rification de signature est abordĂ©e dans la partie Signature et il s'agit uniquement d'une question de calcul. La vĂ©rification d'identitĂ© implique la construction d'une chaĂźne de confiance, selon si un certificat donnĂ© est Ă  priori considĂ©rĂ© comme fiable ou non par le serveur qui le reçoit, et s'il requiert une ICP.

Infrastructure à clés publiques (ICP ou PKI = Public Key Infrastructure)

L'ICP est le systĂšme global qui Ă©tablit la confiance entre les parties. Une partie importante de l'ICP est la hiĂ©rarchie des AutoritĂ©s de Certification (AC). Les autoritĂ©s de niveau supĂ©rieur se portent garantes des autoritĂ©s infĂ©rieures. Physiquement, elles sont implĂ©mentĂ©es en tant que famille de certificats. Une AC se porte garante d'un autre certificat (dont le propriĂ©taire peut ĂȘtre une autre AC) en le signant avec son propre certificat. L'AC de plus haut niveau est appelĂ©e l'AC Racine et est de facto considĂ©rĂ©e comme fiable au sein de l'organisation. Les autres certificats de niveaux infĂ©rieurs qui agissent en tant qu'autoritĂ©s sont appelĂ©es des AC IntermĂ©diaires.

Dans une application Java, le keystore est le fichier dans lequel sont installés tous les ACs et certificats de confiance.

Validation du chemin de certification par le PKIX

Un serveur Java tel que Squash TM peut vérifier l'authenticité d'un certificat inconnu en validant le chemin de certification entre le certificat et l'AC Racine. Ce processus est connu en tant que l'algorithme PKIX.

L'algorithme PKIX permet l'inspection du chemin de certification déclaré par le certificat sous surveillance et de vérifier par rapport au keystore. Si le chemin déclaré concorde avec le contenu du keystore, le certificat sera alors de confiance.

Le chemin de certificat est validĂ© "de bas en haut" jusqu'Ă  ce que l'AC Racine ou une ancre de confiance soit rencontrĂ©e. Une ancre de confiance est tout certificat signalĂ© comme Ă©tant automatiquement de confiance pour un contexte spĂ©cifique. DiffĂ©rents certificats peuvent ĂȘtre utilisĂ©s en tant qu'ancres de confiance pour diffĂ©rents contextes, par exemple la validation d'un certificat ou d'une signature SSL peut ĂȘtre basĂ©e sur diffĂ©rentes ancres de confiance.

Des vérifications supplémentaires peuvent également avoir lieu, notamment la vérification d'une date d'expiration, ou celle d'une abrogation prématurée émise par une AC de niveau supérieur.

Si Ă  un moment un certificat dĂ©clarĂ© dans le chemin est absent du keystore, la validation Ă©chouera. Par consĂ©quent, tous les certificats, CA, etc. concernĂ©s par la mise en Ɠuvre de Squash + SAML doivent ĂȘtre installĂ©s dans le keystore de Squash TM.

Certificats signés

Les certificats signĂ©s sont des certificats qui ont Ă©tĂ© dĂ©livrĂ©s et approuvĂ©s par une AutoritĂ© de Certification. L'approbation ici signifie que l'autoritĂ© s'est assurĂ©e que l'Ă©metteur du certificat candidat est rĂ©ellement qui il prĂ©tend ĂȘtre avant de signer le certificat avec son propre certificat. Le certificat signĂ© peut ĂȘtre vĂ©rifiĂ© par plus tard en un validant un chemin de certification.

Un certificat signé est intrinsÚquement plus sécurisé qu'un certificat autosigné.

Certificats auto-signés

Ces certificats sont communs dans les entreprises car ils sont rapides et peu chers à produire, tant que le risque d'usurpation d'identité est atténué par d'autres moyens dans un environnement contrÎlé.

Par dĂ©finition, un certificat autosignĂ© ne nĂ©cessite pas de chemin de certification ascendant, puisque son identitĂ© ne peut ĂȘtre vĂ©rifiĂ©e par la PKIX. De ce fait, il doit ĂȘtre installĂ© et considĂ©rĂ© comme une ancre de confiance dans le keystore de l'entitĂ© utilisatrice, sinon la validation de l'identitĂ© Ă©chouera.

Info

Un certificat autosignĂ© n'est pas nĂ©cessairement une mauvaise chose : aprĂšs tout, l'AC Racine elle-mĂȘme est un certificat autosignĂ© et aucun autre certificat ne s'en porte garant.

Profil d'interopérabilité des métadonnées (Meta IOP)

Les mĂ©tadonnĂ©es SAML sont des candidates indĂ©niables Ă  une inspection minutieuse lors du dĂ©marrage, mais le cas des Ă©changes de messages durant le SSO est contestable. D'aprĂšs les SpĂ©cifications des mĂ©tadonnĂ©es IOP SAML, la validation du chemin de certification pour les messages SAML pourrait ne pas ĂȘtre effectuĂ©e sans que la sĂ©curitĂ© ne soit compromise :

“Un fichier de mĂ©tadonnĂ©es signĂ© rĂ©pondant Ă  cette spĂ©cification est sĂ©mantiquement Ă©quivalent Ă  une infrastructure Ă  clĂ©s publiques basĂ©es sur X.509. De ce fait, il y a peu d'intĂ©rĂȘt Ă  rajouter ce niveau de complexitĂ© liĂ© Ă  la validation de ce certificat, tel que spĂ©cifiĂ© dans la [RFC5280].”

Cela s'explique ainsi : tant que tous les certificats impliqués dans les conversations SAML sont déclarées dans les métadonnées et que ces métadonnées ont déjà passé des contrÎles de sécurité, il est inutile de les revérifier à chaque fois qu'un message est reçu. Les vérifications du chiffrement et de la signature sont toujours nécessaires pour s'assurer que le message n'a pas été compromis mais l'expéditeur sera considéré comme étant de confiance du seul fait qu'il détienne les clés déclarées dans les métadonnées.

Info

Cette approche est seulement applicable aux messages SAML. La connexion HTTPS qui les transmet est un tout autre sujet et elle fait appel à ses propres contrÎles de sécurité.


  1. La seule exception est couverte dans Traitement des métadonnées