View a markdown version of this page

Lancement de séance SAML dans les groupes d'utilisateurs Amazon Cognito - 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.

Lancement de séance SAML dans les groupes d'utilisateurs Amazon Cognito

Amazon Cognito prend en charge l'authentification unique (SSO) et l'authentification unique (SSOSP-initiated) initiées par le fournisseur de services. IdP-initiated En tant que meilleure pratique de sécurité, implémentez le SP-initiated SSO dans votre groupe d'utilisateurs. La section 5.1.2 de la présentation V2.0 technique du SAML décrit SP-initiated le SSO. Amazon Cognito est le fournisseur d'identité de votre application. L'application est le fournisseur de services qui récupère les jetons pour les utilisateurs authentifiés. Toutefois, quand vous utilisez un fournisseur d'identité tiers pour authentifier les utilisateurs, Amazon Cognito est le fournisseur de services. Lorsque vos utilisateurs SAML 2.0 s'authentifient à l'aide d'un SP-initiated flux, ils doivent toujours d'abord adresser une demande à Amazon Cognito et être redirigés vers l'IdP pour authentification.

Pour certains cas d'utilisation d'entreprise, l'accès aux applications internes commence à un marque-page sur un tableau de bord hébergé par le fournisseur d'identité de l'entreprise. Lorsqu'un utilisateur sélectionne un marque-page, le fournisseur d'identité génère une réponse SAML et l'envoie au fournisseur de services pour authentifier l'utilisateur auprès de l'application.

Vous pouvez configurer un IdP SAML dans votre groupe d'utilisateurs pour prendre en charge IdP-initiated le SSO. Lorsque vous prenez en charge IdP-initiated l'authentification, Amazon Cognito ne peut pas vérifier qu'il a sollicité la réponse SAML qu'il reçoit, car Amazon Cognito ne lance pas l'authentification par une demande SAML. Dans le SP-initiated SSO, Amazon Cognito définit des paramètres d'état qui valident une réponse SAML par rapport à la demande d'origine. En vous SP-initiated connectant, vous pouvez également vous prémunir contre la falsification des requêtes intersites (CSRF).

Implémenter la SP-initated connexion SAML

Il est recommandé d'implémenter la connexion initiée par le fournisseur de services (SP-initiated) à votre groupe d'utilisateurs. Amazon Cognito lance la session de votre utilisateur et le redirige vers votre IdP. Cette méthode vous permet de contrôler au mieux qui présente les demandes de connexion. Vous pouvez également autoriser la IdP-initiated connexion sous certaines conditions.

Le processus suivant montre comment les utilisateurs SP-initiated terminent leur connexion à votre groupe d'utilisateurs via un fournisseur SAML.

Schéma du flux d'authentification de la connexion SP-initiated SAML à Amazon Cognito.
  1. Votre utilisateur saisit son adresse e-mail sur une page de connexion. Pour déterminer la redirection de votre utilisateur vers son IdP, vous pouvez collecter son adresse e-mail dans une application personnalisée ou invoquer une connexion gérée dans la vue Web.

    Vous pouvez configurer vos pages de connexion gérées pour afficher une liste d'adresses e-mail IdPs ou pour vous demander de saisir une adresse e-mail et la faire correspondre à l'identifiant de votre IdP SAML. Pour vous demander une adresse e-mail, modifiez le style de marque de votre connexion gérée et, dans Foundation, localisez Comportement d'authentification et, sous Affichage du fournisseur, définissez le style d'affichage sur Entrée de recherche du domaine.

  2. Votre application invoque le point de terminaison de redirection de votre groupe d'utilisateurs et demande une session avec l'ID client qui correspond à l'application et l'ID IdP qui correspond à l'utilisateur.

  3. Amazon Cognito redirige votre utilisateur vers l'IdP avec une requête SAML, éventuellement signée, dans un élément. AuthnRequest

  4. L'IdP authentifie l'utilisateur de manière interactive ou au moyen d'une session mémorisée dans un cookie de navigateur.

  5. L'IdP redirige votre utilisateur vers le point de terminaison de réponse SAML de votre groupe d'utilisateurs avec l'assertion SAML chiffrée en option dans sa charge utile POST.

    Note

    Amazon Cognito annule les sessions qui ne reçoivent pas de réponse dans les 5 minutes et redirige l'utilisateur vers la connexion gérée. Lorsque votre utilisateur rencontre ce résultat, il reçoit un message Something went wrong d'erreur.

  6. Après avoir vérifié l'assertion SAML et mappé les attributs utilisateur à partir des revendications de la réponse, Amazon Cognito crée ou met à jour en interne le profil de l'utilisateur dans le groupe d'utilisateurs. Généralement, votre groupe d'utilisateurs renvoie un code d'autorisation à la session de navigation de votre utilisateur.

  7. Votre utilisateur présente son code d'autorisation à votre application, qui échange le code contre des jetons Web JSON (JWT).

  8. Votre application accepte et traite le jeton d'identification de votre utilisateur à des fins d'authentification, génère des demandes autorisées aux ressources à l'aide de leur jeton d'accès et stocke leur jeton d'actualisation.

Lorsqu'un utilisateur s'authentifie et reçoit un code d'autorisation accordé, le groupe d'utilisateurs renvoie un identifiant, des jetons d'accès et des jetons d'actualisation. Le jeton d'identification est un objet d'authentification pour la gestion des OIDC-based identités. Le jeton d'accès est un objet d'autorisation avec des étendues OAuth 2.0. Le jeton d'actualisation est un objet qui génère un nouvel identifiant et de nouveaux jetons d'accès lorsque les jetons actuels de votre utilisateur ont expiré. Vous pouvez configurer la durée des jetons des utilisateurs dans le client de votre application de groupe d'utilisateurs.

Vous pouvez également choisir la durée des jetons d'actualisation. Une fois que le jeton d'actualisation d'un utilisateur a expiré, celui-ci doit se reconnecter. S'ils se sont authentifiés via un IdP SAML, la durée de session de vos utilisateurs est définie en fonction de l'expiration de leurs jetons, et non de l'expiration de leur session avec leur IdP. Votre application doit stocker le jeton d'actualisation de chaque utilisateur et renouveler sa session à son expiration. La connexion gérée gère les sessions des utilisateurs dans un cookie de navigateur valide pendant 1 heure.

Implémenter la IdP-initiated connexion SAML

Lorsque vous configurez votre fournisseur d'identité pour la connexion IdP-initiated SAML 2.0, vous pouvez présenter des assertions SAML au saml2/idpresponse terminal de votre domaine de pool d'utilisateurs sans avoir à lancer la session au. Point de terminaison d’autorisation Un groupe d'utilisateurs avec cette configuration accepte les assertions IdP-initiated SAML provenant d'un fournisseur d'identité externe de groupe d'utilisateurs pris en charge par le client d'application demandé.

Schéma du flux d'authentification de la connexion IdP-initiated SAML à Amazon Cognito.
  1. Un utilisateur demande une connexion SAML avec votre application.

  2. Votre application appelle un navigateur ou redirige l'utilisateur vers la page de connexion de son fournisseur SAML.

  3. L'IdP authentifie l'utilisateur de manière interactive ou au moyen d'une session mémorisée dans un cookie de navigateur.

  4. L'IdP redirige votre utilisateur vers votre application avec l'assertion ou la réponse SAML dans son corps POST.

  5. Votre application ajoute l'assertion SAML au corps POST d'une demande adressée au point de saml2/idpresponse terminaison de votre pool d'utilisateurs.

  6. Amazon Cognito envoie un code d'autorisation à votre utilisateur.

  7. Votre utilisateur présente son code d'autorisation à votre application, qui échange le code contre des jetons Web JSON (JWT).

  8. Votre application accepte et traite le jeton d'identification de votre utilisateur à des fins d'authentification, génère des demandes autorisées aux ressources à l'aide de leur jeton d'accès et stocke leur jeton d'actualisation.

Les étapes suivantes décrivent le processus global de configuration et de connexion avec un fournisseur IdP-initiated SAML 2.0.

  1. Créez ou désignez un groupe d'utilisateurs et un client d'application.

  2. Créez un IdP SAML 2.0 dans votre groupe d'utilisateurs.

  3. Configurez votre IdP pour qu'il prenne en charge l'initiation de l'IdP. IdP-initiated SAML introduit des considérations de sécurité auxquelles les autres fournisseurs de SSO ne sont pas soumis. Pour cette raison, vous ne pouvez pas ajouter de code non SAML IdPs, y compris le groupe d'utilisateurs lui-même, à un client d'application qui utilise un fournisseur SAML avec connexion. IdP-initiated

  4. Associez votre fournisseur IdP-initiated SAML à un client d'application de votre groupe d'utilisateurs.

  5. Dirigez votre utilisateur vers la page de connexion de votre IdP SAML et récupérez une assertion SAML.

  6. Dirigez votre utilisateur vers le point de saml2/idpresponse terminaison de votre groupe d'utilisateurs à l'aide de son assertion SAML.

  7. Recevez des jetons Web JSON (JWT).

Pour accepter des assertions SAML non sollicitées dans votre groupe d'utilisateurs, vous devez prendre en compte leur effet sur la sécurité de votre application. Des tentatives d'usurpation des demandes et de CSRF sont probables lorsque vous acceptez des demandes. IdP-initiated Bien que votre groupe d'utilisateurs ne puisse pas vérifier une session de IdP-initiated connexion, Amazon Cognito valide les paramètres de votre demande et vos assertions SAML.

En outre, votre assertion SAML ne doit pas contenir de InResponseTo réclamation et doit avoir été émise au cours des 6 minutes précédentes.

Vous devez envoyer les demandes avec IdP-initiated SAML à votre/saml2/idpresponse. Pour les demandes d'autorisation de connexion gérées SP-initiated et gérées, vous devez fournir des paramètres identifiant le client d'application, les étendues, l'URI de redirection et d'autres informations en tant que paramètres de chaîne de requête dans les HTTP GET requêtes. Pour les assertions IdP-initiated SAML, toutefois, les détails de votre demande doivent être mis en forme en tant que RelayState paramètre dans le corps de la demande. HTTP POST Le corps de la requête doit également contenir votre assertion SAML en tant que SAMLResponse paramètre.

Voici un exemple de demande et de réponse pour un fournisseur IdP-initiated SAML.

POST /saml2/idpresponse HTTP/1.1 User-Agent: USER_AGENT Accept: */* Host: example.auth.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location: https://www.example.com?code=[Authorization code]
Console de gestion AWS
Pour configurer un IdP pour SAML IdP-initiated
  1. Créez un groupe d'utilisateurs, un client d'application et un fournisseur d'identité SAML.

  2. Dissociez tous les fournisseurs d'identité sociaux et OIDC de votre client d'application, le cas échéant.

  3. Accédez au menu Réseaux sociaux et fournisseurs externes de votre groupe d'utilisateurs.

  4. Modifiez ou ajoutez un fournisseur SAML.

  5. Sous Connexion IdP-initiated SAML, choisissez Accepter SP-initiated et les assertions IdP-initiated SAML.

  6. Sélectionnez Enregistrer les modifications.

API/CLI

Pour configurer un IdP pour SAML IdP-initiated

Configurez IdP-initiated SAML à l'aide du IDPInit paramètre figurant dans une demande d'UpdateIdentityProviderAPI CreateIdentityProvider ou. Voici un exemple ProviderDetails d'IdP qui prend en charge le protocole IdP-initiated SAML.

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }