Ajout de fournisseurs d'identité SAML à un groupe d'utilisateurs. - Amazon Cognito

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ajout de fournisseurs d'identité SAML à un groupe d'utilisateurs.

Vous pouvez choisir de faire en sorte que les utilisateurs de vos applications Web et mobiles se connectent via un fournisseur d'identité SAML (IdP) tel que Microsoft Active Directory Federation Services (ADFS) ou Shibboleth. Vous devez choisir un fournisseur d'identité SAML qui prend en charge la norme SAML 2.0.

Grâce à l'interface utilisateur hébergée et aux points de terminaison de fédération, Amazon Cognito authentifie les utilisateurs IdP locaux et tiers et émet des jetons Web JSON (JWT). Avec les jetons émis par Amazon Cognito, vous pouvez consolider plusieurs sources d'identité dans une norme universelle OpenID Connect (OIDC) pour toutes vos applications. Amazon Cognito peut traiter les assertions SAML de vos fournisseurs tiers conformément à cette norme SSO. Vous pouvez créer et gérer un IdP SAML dans, via ou avec AWS Management Console l'API AWS CLI des groupes d'utilisateurs Amazon Cognito. Pour créer votre premier IdP SAML dans AWS Management Console le, voir. Ajouter et gérer des fournisseurs d'identité SAML dans un groupe d'utilisateurs


                Vue d'ensemble de l'authentification avec connexion SAML
Note

La fédération avec connexion via un IdP tiers est une fonctionnalité des groupes d'utilisateurs Amazon Cognito. Les groupes d'identités Amazon Cognito, parfois appelés identités fédérées Amazon Cognito, sont une implémentation de fédération que vous devez configurer séparément dans chaque pool d'identités. Un groupe d'utilisateurs peut être un IdP tiers d'un pool d'identités. Pour de plus amples informations, veuillez consulter Groupes d’identités Amazon Cognito.

Référence rapide pour la configuration de l'IdP

Vous devez configurer votre IdP SAML pour accepter les demandes et envoyer des réponses à votre groupe d'utilisateurs. La documentation de votre IdP SAML contiendra des informations sur la façon d'ajouter votre groupe d'utilisateurs en tant que partie utilisatrice ou application pour votre IdP SAML 2.0. La documentation suivante fournit les valeurs que vous devez fournir pour l'ID d'entité SP et l'URL du service client d'assertion (ACS).

Référence rapide des valeurs SAML du pool d'utilisateurs
ID de l'entité SP
urn:amazon:cognito:sp:us-east-1_EXAMPLE
URL DE L'ACS
https://Your user pool domain/saml2/idpresponse

Vous devez configurer votre groupe d'utilisateurs pour qu'il prenne en charge votre fournisseur d'identité. Les étapes de haut niveau pour ajouter un IdP SAML externe sont les suivantes.

  1. Téléchargez les métadonnées SAML depuis votre IdP ou récupérez l'URL de votre point de terminaison de métadonnées. veuillez consulter Configuration de votre fournisseur d'identité SAML tiers.

  2. Ajoutez un nouvel IdP à votre groupe d'utilisateurs. Téléchargez les métadonnées SAML ou fournissez l'URL des métadonnées. veuillez consulter Ajouter et gérer des fournisseurs d'identité SAML dans un groupe d'utilisateurs.

  3. Assignez l'IdP aux clients de votre application. Consultez Clients de l’application de groupe d’utilisateurs.

Ce qu'il faut savoir sur le protocole SAML IdPs dans les groupes d'utilisateurs Amazon Cognito

Amazon Cognito traite les assertions SAML pour vous

Les groupes d'utilisateurs Amazon Cognito prennent en charge la fédération SAML 2.0 avec points de terminaison de liaison postérieure. Ainsi, votre application n'a plus besoin d'analyser ni de récupérer les réponses d'assertion SAML, étant donné que le groupe d'utilisateurs reçoit directement la réponse SAML de votre fournisseur d'identité via un agent utilisateur. Votre groupe d'utilisateurs agit en tant que fournisseur de services pour le compte de votre application. Amazon Cognito prend en charge l'authentification unique (SSO) initiée par le SP et l'IDP, comme décrit dans les sections 5.1.2 et 5.1.4 de la présentation technique de SAML V2.0.

Fournir un certificat de signature IdP valide

Le certificat de signature figurant dans les métadonnées de votre fournisseur SAML ne doit pas être expiré lorsque vous configurez l'IdP SAML dans votre groupe d'utilisateurs ou lorsqu'un utilisateur s'authentifie auprès de SAML 2.0.

Les groupes d'utilisateurs prennent en charge plusieurs certificats de signature

Lorsque votre fournisseur d'identités SAML inclut plusieurs certificats de signature dans les métadonnées SAML, lors de la connexion, votre groupe d'utilisateurs détermine que l'assertion SAML est valide si elle correspond à un certificat figurant dans les métadonnées SAML. Chaque certificat de signature ne doit pas comporter plus de 4 096 caractères.

Maintenir le paramètre d'état du relais

Amazon Cognito et votre IdP SAML gèrent les informations de session à l'aide d'un paramètre relayState.

  1. Amazon Cognito prend en charge relayState les valeurs supérieures à 80 octets. Alors que les spécifications SAML stipulent que la valeur relayState « ne doit pas dépasser 80 octets de longueur », les pratiques actuelles du secteur s'écartent souvent de ce comportement. En conséquence, le rejet des valeurs relayState de plus de 80 octets rend de nombreuses intégrations de fournisseurs SAML standard inutilisables.

  2. Le relayState jeton est une référence opaque aux informations d'état gérées par Amazon Cognito. Amazon Cognito ne garantit pas le contenu du paramètre relayState. N'analysez pas son contenu de telle sorte que votre application dépende du résultat. Pour plus d'informations, consultez la page Spécification SAML 2.0.

Identifiez le point de terminaison ACS

Votre fournisseur d'identité SAML exige que vous définissiez un point de terminaison consommateur d'assertion. Votre fournisseur d'identité redirige vos utilisateurs vers ce point de terminaison avec leur assertion SAML. Configurez le point de terminaison suivant dans le domaine de votre groupe d'utilisateurs pour la liaison POST SAML 2.0 dans votre fournisseur d'identité SAML.

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse With a custom domain: https://auth.example.com/saml2/idpresponse

Pour plus d'informations sur les domaines de groupes d’utilisateurs, consultez Configuration d'un domaine de groupe d'utilisateurs.

Aucune assertion rejouée

Vous ne pouvez pas répéter ni réutiliser une assertion SAML sur votre point de terminaison saml2/idpresponse Amazon Cognito. Une assertion SAML réutilisée possède un ID d'assertion qui duplique l'ID d'une demande d'API précédente.

L'ID du groupe d'utilisateurs est l'ID de l'entité SP

Vous devez fournir à votre IdP l'ID de votre groupe d'utilisateurs dans le fournisseur de services (SP)urn, également appelé URI d'audience ou ID d'entité SP. L'URI du public pour votre groupe d'utilisateurs a le format suivant.

urn:amazon:cognito:sp:us-east-1_EXAMPLE

Vous trouverez l'ID de votre groupe d'utilisateurs dans la section Vue d'ensemble du groupe d'utilisateurs dans la console Amazon Cognito.

Cartographier tous les attributs requis

Configurez votre fournisseur d'identité SAML pour fournir des valeurs d'attributs que vous définissez pour tous les attributs requis dans votre groupe d'utilisateurs. Par exemple, email est un attribut courant requis pour les groupes d'utilisateurs. Avant que vos utilisateurs puissent se connecter, vos assertions de fournisseur d'identité SAML doivent inclure une demande que vous mappez à l'Attribut du groupe d'utilisateurs email. Pour plus d'informations sur le mappage d'attributs, consultez Spécification des mappages d'attributs du fournisseur d'identité pour votre groupe d'utilisateurs.

Le format d'assertion a des exigences spécifiques

Votre IdP SAML doit inclure les revendications suivantes dans l'assertion SAML.

  1. Une NameID réclamation. Amazon Cognito associe une assertion SAML à l'utilisateur de destination par. NameID En cas de NameID modification, Amazon Cognito considère que l'assertion est destinée à un nouvel utilisateur. L'attribut que vous avez défini NameID dans votre configuration IdP doit avoir une valeur persistante.

    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent"> carlos </saml2:NameID>
  2. Un champ standard AudienceRestriction avec une valeur Audience qui définit l'ID d'entité SP de votre groupe d'utilisateurs comme cible de la réponse.

    <saml:AudienceRestriction> <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE </saml:AudienceRestriction>
  3. Pour l'authentification unique initiée par le SP, Response élément dont InResponseTo la valeur est l'ID de demande SAML d'origine.

    <saml2p:Response Destination="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    Note

    Les assertions SAML initiées par l'IdP ne doivent pas contenir de valeur. InResponseTo

  4. SubjectConfirmationDataÉlément dont Recipient la valeur correspond au point de saml2/idpresponse terminaison de votre groupe d'utilisateurs et, pour le protocole SAML initié par SP, une InResponseTo valeur correspondant à l'ID de demande SAML d'origine.

    <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse"/>
Demandes de connexion initiées par le SP

Lorsque le Point de terminaison d’autorisation redirige votre utilisateur vers la page de connexion de votre fournisseur d'identité, Amazon Cognito inclut une demande SAML dans un paramètre d'URL de la demande HTTP GET. Une demande SAML contient des informations sur votre groupe d'utilisateurs, y compris votre point de terminaison ACS. Vous pouvez éventuellement appliquer une signature cryptographique à ces demandes.

Signer les demandes et chiffrer les réponses

Chaque groupe d'utilisateurs disposant d'un fournisseur SAML génère une paire de clés asymétriques et un certificat de signature pour une signature numérique qu'Amazon Cognito attribue aux demandes SAML. Chaque IdP SAML externe que vous configurez pour prendre en charge une réponse SAML cryptée oblige Amazon Cognito à générer une nouvelle paire de clés et un nouveau certificat de chiffrement pour ce fournisseur. Pour consulter et télécharger les certificats avec la clé publique, choisissez votre IdP dans l'onglet Expérience de connexion de la console Amazon Cognito.

Pour établir la confiance avec les demandes SAML provenant de votre groupe d'utilisateurs, fournissez à votre IdP une copie du certificat de signature SAML 2.0 de votre groupe d'utilisateurs. Votre IdP peut ignorer les demandes SAML signées par votre groupe d'utilisateurs si vous ne configurez pas l'IdP pour qu'il accepte les demandes signées.

  1. Amazon Cognito applique une signature numérique aux demandes SAML que votre utilisateur transmet à votre IdP. Votre groupe d'utilisateurs signe toutes les demandes de déconnexion unique (SLO), et vous pouvez configurer votre groupe d'utilisateurs pour signer les demandes d'authentification unique (SSO) pour n'importe quel IdP externe SAML. Lorsque vous fournissez une copie du certificat, votre IdP peut vérifier l'intégrité des demandes SAML de vos utilisateurs.

  2. Votre IdP SAML peut chiffrer les réponses SAML à l'aide du certificat de chiffrement. Lorsque vous configurez un IdP avec le chiffrement SAML, votre IdP ne doit envoyer que des réponses chiffrées.

Coder des caractères non alphanumériques

Amazon Cognito n'accepte pas les caractères UTF-8 de 4 octets tels que 😐 ou que votre IdP transmet comme valeur d'attribut. Vous pouvez coder le caractère en Base64, le transmettre sous forme de texte, puis le décoder dans votre application.

Dans l'exemple suivant, la revendication d'attribut ne sera pas acceptée :

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue> </saml2:Attribute>

Contrairement à l'exemple précédent, la revendication d'attribut suivante sera acceptée :

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue> </saml2:Attribute>
Le point de terminaison des métadonnées doit disposer d'une sécurité de couche de transport valide

Si InvalidParameterException s'affiche pendant la création d'un fournisseur d'identité SAML avec une URL de point de terminaison de métadonnées HTTPS, par exemple, « Error retrieving metadata from <metadata endpoint> » (Erreur lors de la récupération des métadonnées à partir de <point de terminaison de métadonnées>), veillez à ce que SSL soit correctement configuré pour le point de terminaison des métadonnées et qu'un certificat SSL valide y soit associé. Pour plus d'informations sur la validation des certificats, voir Qu'est-ce qu'un certificat SSL/TLS ? .

Les clients d'applications utilisant le protocole SAML initié par l'IdP ne peuvent se connecter qu'avec le protocole SAML

Lorsque vous activez la prise en charge d'un IdP SAML 2.0 qui prend en charge la connexion initiée par l'IdP à un client d'application, vous ne pouvez ajouter qu'un autre protocole SAML IdPs 2.0 à ce client d'application. Il vous est interdit d'ajouter l'annuaire des utilisateurs dans le groupe d'utilisateurs et tous les fournisseurs d'identité externes non SAML à un client d'application configuré de cette manière.

Sensibilité à la casse des noms d'utilisateur SAML

Lorsqu'un utilisateur fédéré tente de se connecter, le fournisseur d'identité SAML (IdP) transmet un code unique à Amazon NameId Cognito dans l'assertion SAML de l'utilisateur. Amazon Cognito identifie un utilisateur fédéré SAML par sa demande NameId. Quels que soient les paramètres de distinction majuscules/minuscules de votre groupe d'utilisateurs, Amazon Cognito reconnaît un utilisateur fédéré qui revient d'un IdP SAML lorsqu'il transmet sa demande unique et différenciée par majuscules et minuscules. NameId Si vous mappez un attribut comme email à NameId, et que votre utilisateur change d'adresse e-mail, il ne peut pas se connecter à votre application.

Mappez NameId dans vos assertions SAML à partir d'un attribut de fournisseur d'identité dont les valeurs ne changent pas.

Par exemple, Carlos possède un profil utilisateur dans votre groupe d'utilisateurs insensible à la casse provenant d'une assertion SAML ADFS (Active Directory Federation Services) qui a transmis une valeur NameId de Carlos@example.com. La prochaine fois que Carlos tente de se connecter, votre fournisseur d'identité ADFS transmet une valeur NameId de carlos@example.com. Comme NameId doit être une correspondance exacte qui respecte la casse, la connexion ne réussit pas.

Si vos utilisateurs ne peuvent pas se connecter après le changement de NameID, supprimez leurs profils utilisateur de votre groupe d'utilisateurs. Amazon Cognito créera de nouveaux profils utilisateur la prochaine fois qu'ils se connecteront.