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.
SAMLlancement de session dans les groupes d'utilisateurs Amazon Cognito
Amazon Cognito prend en charge l'authentification unique () initiée par le fournisseur de services (initiée par le fournisseur de services) et par l'IdP. SSO SSO En tant que meilleure pratique de sécurité, implémentez l'initiative SP SSO dans votre groupe d'utilisateurs. La section 5.1.2 de la présentation technique de la SAML version 2.0
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 signet, l'IdP génère SAML une réponse et l'envoie au SP pour authentifier l'utilisateur auprès de l'application.
Vous pouvez configurer un SAML IdP dans votre groupe d'utilisateurs pour prendre en charge l'IdP initié. SSO Lorsque vous soutenez l'authentification initiée par l'IdP, Amazon Cognito ne peut pas vérifier qu'il a sollicité SAML la réponse qu'il reçoit, car Amazon Cognito n'initie pas l'authentification par le biais d'une demande. SAML Dans le cas d'une demande initiée par SPSSO, Amazon Cognito définit des paramètres d'état qui valident SAML une réponse par rapport à la demande initiale. Avec la connexion initiée par le SP, vous pouvez également vous prémunir contre la falsification de requêtes intersites (). CSRF
Rubriques
Utilisation de la connexion initiée par le SP SAML
La meilleure pratique consiste à implémenter une connexion service-provider-initiated (initiée par le SP) à votre groupe d'utilisateurs. Amazon Cognito lance la session de votre utilisateur et le redirige vers votre IdP. Avec cette méthode, vous avez le meilleur contrôle sur les personnes qui présentent les demandes de connexion. Vous pouvez également autoriser la connexion initiée par l'IdP sous certaines conditions.
Le processus suivant montre comment les utilisateurs effectuent une connexion initiée par le SP à votre groupe d'utilisateurs par le biais d'un SAML fournisseur.
-
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 l'interface utilisateur hébergée en mode Web. Vous pouvez configurer votre interface utilisateur hébergée pour afficher une liste d'adresses e-mail IdPs ou pour ne demander qu'une adresse e-mail.
-
Votre application appelle le point de terminaison de redirection de votre groupe d'utilisateurs et demande une session avec l'ID client correspondant à l'application et l'identifiant IdP correspondant à l'utilisateur.
-
Amazon Cognito redirige votre utilisateur vers l'IdP avec une SAML demande, éventuellement signée, dans un élément.
AuthnRequest
-
L'IdP authentifie l'utilisateur de manière interactive ou à l'aide d'une session mémorisée dans un cookie de navigateur.
-
L'IdP redirige votre utilisateur vers le point de terminaison de SAML réponse de votre groupe d'utilisateurs avec l'assertion chiffrée facultativement dans sa charge utileSAML. POST
Note
Amazon Cognito annule les sessions qui ne reçoivent pas de réponse dans les 5 minutes et redirige l'utilisateur vers l'interface utilisateur hébergée. Lorsque votre utilisateur rencontre ce résultat, il reçoit un message
Something went wrong
d'erreur. -
Après avoir vérifié l'SAMLassertion et mappé les attributs de l'utilisateur à partir des demandes contenues dans 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 l'utilisateur.
-
Votre utilisateur présente son code d'autorisation à votre application, qui échange le code contre des jetons JSON Web (JWTs).
-
Votre application accepte et traite le jeton d'identification de votre utilisateur comme authentification, génère des demandes autorisées aux ressources avec leur jeton d'accès et stocke leur jeton d'actualisation.
Lorsqu'un utilisateur s'authentifie et reçoit un code d'autorisation octroyé, le groupe d'utilisateurs renvoie des jetons d'identification, d'accès et d'actualisation. Le jeton d'identification est un objet d'authentification pour la gestion OIDC basée sur les identités. Le jeton d'accès est un objet d'autorisation de portée OAuth2.0
Vous pouvez également choisir la durée des jetons d'actualisation. Une fois le jeton d'actualisation d'un utilisateur expiré, celui-ci doit se reconnecter. S'ils se sont authentifiés via un SAML IdP, la durée de session de vos utilisateurs est définie par l'expiration de leurs jetons, et non par 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. L'interface utilisateur hébergée conserve les sessions utilisateur dans un cookie de navigateur valide pendant 1 heure.
Utilisation de la connexion initiée par l'IdP SAML
Lorsque vous configurez votre fournisseur d'identité pour une connexion SAML 2.0 initiée par l'IDP, vous pouvez présenter SAML des assertions au point de saml2/idpresponse
terminaison du domaine de votre groupe d'utilisateurs sans avoir à lancer la session au. Point de terminaison d’autorisation Un groupe d'utilisateurs doté de cette configuration accepte les SAML assertions initiées par l'IdP provenant d'un fournisseur d'identité externe du groupe d'utilisateurs pris en charge par le client d'application demandé. Les étapes suivantes décrivent le processus global de configuration et de connexion à un fournisseur SAML 2.0 initié par l'IdP.
-
Créez ou désignez un groupe d'utilisateurs et un client d'application.
-
Créez un IdP SAML 2.0 dans votre groupe d'utilisateurs.
-
Configurez votre IdP pour prendre en charge l'initiation de l'IdP. L'initiative initiée par l'IdP SAML introduit des considérations de sécurité auxquelles les autres SSO fournisseurs ne sont pas soumis. Pour cette raison, vous ne pouvez pas ajouter de données non SAML IdPs, y compris le groupe d'utilisateurs lui-même, à un client d'application qui utilise un SAML fournisseur avec une connexion initiée par l'IdP.
-
Associez votre SAML fournisseur initié par l'IdP à un client d'application de votre groupe d'utilisateurs.
-
Dirigez votre utilisateur vers la page de connexion de votre SAML IdP et récupérez SAML une assertion.
-
Dirigez votre utilisateur vers le point de
saml2/idpresponse
terminaison de votre groupe d'utilisateurs avec son SAML assertion. -
Recevez des jetons JSON Web (JWTs).
Pour accepter SAML des assertions non sollicitées dans votre groupe d'utilisateurs, vous devez tenir compte de leur effet sur la sécurité de votre application. L'usurpation de demande et les CSRF tentatives sont probables lorsque vous acceptez les demandes initiées par l'IdP. Bien que votre groupe d'utilisateurs ne puisse pas vérifier une session de connexion initiée par un IdP, Amazon Cognito valide les paramètres et assertions de votre demande. SAML
De plus, votre SAML assertion ne doit pas contenir de InResponseTo
réclamation et doit avoir été émise dans les 6 minutes précédentes.
Vous devez envoyer les demandes initiées par l'IdP SAML à votre. /saml2/idpresponse
Pour les demandes d'autorisation d'interface utilisateur initiées par SP et hébergées, vous devez fournir des paramètres identifiant le client d'application demandé, les champs d'application, la redirection URI et d'autres informations sous forme de paramètres de chaîne de requête dans HTTP GET
les demandes. Toutefois, pour SAML les assertions initiées par l'IdP, les détails de votre demande doivent être formatés en tant que RelayState
paramètre dans le corps de la demande. HTTP POST
Le corps de la demande doit également contenir votre SAML assertion en tant que SAMLResponse
paramètre.
Voici un exemple de demande pour un fournisseur initié par un IdPSAML.
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]