SAML Messages

Exigences pour la connexion SAML 2.0 de l'application web

Émission de la SAML 2.0 AuthnRequest

Le chapitre suivant décrit la structure du message SAML 2.0 AuthnRequest. Au moyen de ce message, l'application demande a eIAM un token SAML contenant les données de l'utilisateur.

Paramètres                         Définition
Assertion-Consumer-ServiceURL Pour les RP-PEP celle-ci DOIT être fixe et prédéfinie via les métadonnées de l'application. Elle NE DOIT PAS être fournie dans AuthnRequest.
Pour les STS l'AssertionConsumerServiceURL PEUT être variable. Elle NE DOIT PAS être prédéfinie via les métadonnées de l'application. Si la valeur n'est pas définie dans les métadonnées, l'AssertionConsumerServiceURL DOIT être fournie avec chaque AuthnRequest. L'AssertionConsumerServiceURL PEUT être fournie via les métadonnées de l'application. Dans ce cas, elle est fixée dans l'STS.
DestinationLa destination DOIT avoir la valeur du WebSSO AuthnRequest Consumer de l'STS (Single Sign-On URL de l'STS).
Généralement, il s'agit de https://<a FQDN>/auth/saml2/sso.
IssueInstant L'IssueInstant DOIT être défini au moment exact où l'AuthnRequest est émis.
ProtocolBinding Le ProtocolBinding DOIT être "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST".
Issuer L'Issuer DOIT être un URI. L'URI peut être une URL dans le domaine de l'application web émettrice ou un URN de l'espace de nommage de l'application.
SignaturePour les applications utilisant des RP-PEPs, l'AuthnRequest NE DOIT PAS être signé.
Pour les applications utilisant des STS, l'AuthnRequest DOIT être signée.
KeyInfo Une KeyInfo permettant d'identifier le matériel de la clé pour la vérification de l'AuthnRequest SAML 2.0 DOIT obligatoirement être présente si l'AuthnRequest doit être signée.
Conditions L'AuthnRequest PEUT contenir l'élément Conditions. La durée de validité de l'assertion qui y est demandée n'est toutefois pas prise en compte par le PEP en tant qu'FI pour l'émission de l'assertion.

Transmission de la SAML 2.0 AuthnRequest et réception de la Response


Exigences pour la transmission de la SAML 2.0 AuthnRequest au moyen de Form

Paramètres                            Définition
Binding La transmission de la SAML 2.0 AuthnRequest DOIT se faire dans l'eIAM par HTTP-POST Binding.
"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Destination La destination DOIT avoir la valeur du WebSSO AuthnRequest Consumer de l'eIAM (URL SSO sur le PEP).
Exemple:
Destination="https://www.gate.amt.admin.ch/auth/saml2/sso"
RelayState L'application PEUT transmettre comme paramètre avec l'AuthnRequest a eIAM au moyen du RelayState (adresse de retour à laquelle le client est redirigé après l'authentification par l'application), que celui-ci renverra inchangée avec la SAML Response.
La valeur dans le RelayState DOIT être soit une URI soit une URL sur le PEP. Pour les applications en dehors des réseaux de l'administration fédérale DOIT être un URI ou un URL de l'application.
Si le paramètre RelayState est utilisé, le paramètre DOIT être encodé ou crypté. L'application peut toutefois utiliser une redirection vers une adresse fixe même après la création réussie du contexte de sécurité.
Exemple: RelayState:
FsWPanuIL9C19QxcpN2Bx4roAJwZiOh8NxcjAozlcQcAwVuAgSMLtKwjPt5Thga4YDeQpgJwshn/Ra3U/F329A==
Remarque: Il est important de savoir que le RelayState n'est pas protégé par la signature de la demande d'authentification et nécessite donc des mesures supplémentaires du côté de l'application pour éviter les attaques de type CSRF.

La réponse SAML 2.0


Consommer la réponse SAML 2.0
L'application DOIT pouvoir consommer la réponse par i'eIAM sous la forme d'une SAML 2.0 Response sur l'URL indiquée comme AssertionConsumerService Location. La réponse SAML contient soit une assertion SAML, soit une signalisation d'erreur du protocole SAML 2.0. De plus, pour des raisons d'intégrité, la réponse SAML 2.0 est transmise signée. La structure XML d'une réponse se présente comme suit:


Paramètre                            Définition
ID Identificateur unique de la réponse SAML
Version Version SAML de la réponse émise.
Dans eIAM toujours "2.0"
IssueInstant Horodatage de l'émission de la SAML Response sur l'eIAM
Destination L'URL du destinataire de la réponse SAML
Consent consentement de l'utilisateur à l'envoi de l'assertion SAML au fournisseur de services. Actuellement, toujours "non spécifié" dans l'eIAM, car cette fonctionnalité n'est pas encore utilisée.
InResponseToIdentificateur de l'AuthnRequest de l'application à laquelle l'eIAM répond avec la présente Response.
L'application DOIT valider que la SAML 2.0 Response contient dans l'attribut InResponseTo l'ID de l'AuthnRequest envoyée précédemment.
xmlns:samlp Espace de nommage XML utilisé du protocole SAML
Dans l'eIAM toujours "urn:oasis:names:tc:SAML:2.0:protocol"
Signature Informations sur la signature
La réponse signée par l'émetteur sert de preuve que lui seul peut avoir signé la réponse. Elle sert aussi à garantir l'intégrité de la réponse.
Elle contient la technologie de signature utilisée, la signature proprement dite de l'assertion ainsi que la clé publique du certificat de signature. Cette dernière sert au système récepteur à identifier le matériel de clé dans son truststore.
Remarque: L'application DOIT vérifier la signature. Si la vérification de la réponse n'a pas abouti, le contenu de la réponse NE DOIT PAS être utilisé par l'application.
Issuer entité émettrice de la réponse SAML 2.0
Identifie l'entité d'eIAM.
Un URI (peut être une URL ou un URN)
L'application DOIT valider que la réponse contient l'identifiant d'eIAM en tant qu'émetteur.
saml:Status code d'état avec lequel l'eIAM envoie la réponse SAML 2.0 à l'application.
En règle générale, chaque réponse signale une erreur qui n'est pas renvoyée avec le statut "Success". "urn:oasis:names:tc:SAML:2.0:status:Success"
L'application DOIT valider que la réponse contient le code de statut "urn:oasis:names:tc:SAML:2.0:status:Success".

Exemple abrégé de réponse SAML 2.0:

L'assertion SAML 2.0

La SAML Assertion fait partie de la SAML Response. L'assertion SAML contient des déclarations sur l'identité de l'utilisateur, les attributs de l'utilisateur et des informations sur la manière dont l'authentification de l'utilisateur a été effectuée dans l'eIAM.



Élément XML                            Définition
ID Identificateur unique de l'assertion SAML.
Version Version SAML de l'assertion SAML émise.
Dans l'eIAM toujours "2.0"
IssueInstant Horodatage de l'émission de l'assertion SAML par eIAM
xmlns XML Namespace
Dans l'eIAM toujours "urn:oasis:names:tc:SAML:2.0:assertion"
Issuer Entité émettrice de la réponse SAML 2.0
Identifie l'entité d'eIAM
eIAM utilise généralement des émetteurs spécifiques à une application, comme "urn:eiam.admin.ch:pep:test-application".
ds:Signature Contient des informations pertinentes pour la signature numérique de l'assertion SAML.
ds:SignatureValue La valeur de la signature numérique calculée par l'assertion SAML en utilisant la clé privée de la paire de clés du certificat As-sertion Signer.
KeyInfo Contient des informations sur la clé publique qui doit être utilisée pour la vérification de la signature.
Est toujours le certificat X509 pour l'eIAM
Subject contient des informations sur le sujet (utilisateur accédant).
Format Subject.NameID
Subject.NameID
eIAM fixe le format du NameID à la valeur "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent".
Si le Relying Party est une application métier d'un office spécialisé, eIAM définit le NameID sur le userExtId de l'utilisateur accédant dans le mandant Access (mandant de l'office).
Si l'application est une application dédiée à un bureau fédéral, alors la valeur de Subject.NameID sera l'ExtID de l'utilisateur du client d'accès. Si l'application est utilisée dans plusieurs bureaux fédéraux, alors la valeur de Subject.NameID sera le loginId de l'utilisateur dans le root client.
Le Relying Party DEVRAIT utiliser la valeur NameID du Subject pour mapper l'utilisateur dans l'application.
SubjectConfirmation Method Méthode par laquelle l'eIAM de l'application confirme le sujet identifié.
Dans l'eIAM, toujours "urn:oasis:names:tc:SAML:2.0:cm:bearer"
SubjectConfirmationData InResponseTo Référence à l'ID de la SAML AuthnRequest de l'application, à laquelle ce sujet est confirmé.
SubjectConfirmationData NotOnOrAfter Temps Tampon jusqu'à ce que la confirmation d'eIAM sur les déclarations du sujet soit valable.
SubjectConfirmationData Recipient Recipient URL de l'entité pour laquelle cette confirmation d'eIAM a été émise.
Conditions Définit les conditions que le fournisseur de services DOIT vérifier pour déterminer s'il peut considérer l'assertion comme valide.
Conditions NotBefore Empreinte temporelle indiquant le moment à partir duquel l'assertion SAML peut être validée au plus tôt par le fournisseur de services. Si ce moment n'est pas encore atteint dans ce timbre horaire, le fournisseur de services DOIT considérer l'assertion SAML comme non valide.
Conditions NotOnOrAfter Empreinte temporelle pour le moment à partir duquel l'assertion SAML peut être validée au plus tard par le fournisseur de services. Une assertion SAML antérieure à cette date DOIT être considérée comme non valide par le fournisseur de services.
AudienceRestriction Contient des informations sur le cercle des destinataires qui peuvent utiliser cette assertion SAML.
AudienceRestriction Audience entité(s) autorisée(s) à utiliser cette assertion SAML.
Un URI. Peut être une URL ou un URN.
L'application DOIT vérifier si elle fait partie du cercle des destinataires de l'assertion SAML. Si ce n'est pas le cas, elle DOIT considérer l'assertion SAML comme non valide.