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.
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 :
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.
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
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
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. 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]https://docs.oasis-open.org/security/saml-protoc-req-attr-req/v1.0/cs01/saml-protoc-req-attr-req-v1.0-cs01.pdf){:target="_blank"}) 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 :
- Le contenu des messages reste inaccessible aux parties non-désirées ;
- Le contenu n'a pas été altéré ;
- Le contenu soit envoyé de l'origine voulue ;
- 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é.
-
La seule exception est couverte dans Traitement des mĂ©tadonnĂ©es ↩