Fournisseurs d'identité SAML (groupes d'identités) - Amazon Cognito

Fournisseurs d'identité SAML (groupes d'identités)

Amazon Cognito prend en charge l'authentification avec des fournisseurs d'identité via le langage SAML 2.0 (Security Assertion Markup Language 2.0). Vous pouvez utiliser un fournisseur d'identité qui prend en charge le langage SAML avec Amazon Cognito pour faciliter l'intégration de vos utilisateurs. Votre fournisseur d'identité prenant en charge SAML spécifie les rôles IAM que vos utilisateurs peuvent endosser. De cette façon, différents utilisateurs peuvent recevoir différents ensembles d'autorisations.

Configuration de votre groupe d'identités pour un fournisseur d'identité SAML

Les étapes suivantes expliquent comment configurer votre groupe d'identités pour utiliser un fournisseur d'identité basé sur SAML.

Note

Avant de configurer votre groupe d'identités pour prendre en charge un fournisseur SAML, configurez le fournisseur d'identité SAML dans la console IAM. Pour plus d'informations, consultez Intégration de prestataires de solution SAML tiers avec AWS dans le Guide de l'utilisateur IAM.

Configuration de votre groupe d'identités pour prendre en charge un fournisseur SAML

  1. Connectez-vous à la console Amazon Cognito et choisissez Manage Identity Pools (Gérer les groupes d'identités), puis Create new identity pool (Créer un groupe d'identités).

  2. Dans la section Authentication providers (Fournisseurs d'authentification), choisissez l'onglet SAML.

  3. Choisissez l'ARN du fournisseur SAML, puis choisissez Create Pool (Créer un groupe).

Configuration de votre fournisseur d'identité SAML

Après avoir créé le fournisseur SAML, configurez votre fournisseur d'identité SAML pour ajouter une relation d'approbation des parties utilisatrices entre votre fournisseur d'identité et AWS. De nombreux fournisseurs d'identité vous permettent de spécifier une URL pour lire un document XML contenant des informations sur les parties utilisatrices et les certificats. Pour AWS, vous pouvez utiliser https://signin.aws.amazon.com/static/saml-metadata.xml. L'étape suivante consiste à configurer la réponse d'assertion SAML de votre fournisseur d'identité pour renseigner les demandes requises par AWS. Pour plus d'informations sur la configuration des demandes, consultez la page Configuration des assertions SAML pour la réponse d'authentification.

Personnalisation d'un rôle d'utilisateur avec SAML

Quand vous utilisez SAML avec Amazon Cognito Identity, vous pouvez personnaliser le rôle pour l'utilisateur final. Amazon Cognito prend uniquement en charge le flux amélioré avec le fournisseur d'identité basé sur SAML. Vous n'avez pas besoin de spécifier de rôle authentifié ou non authentifié pour que le groupe d'identités utilise un fournisseur d'identité basé sur SAML. L'attribut de la demande https://aws.amazon.com/SAML/Attributes/Role spécifie une ou plusieurs paires d'ARN (Amazon Resource Name) de fournisseur et de rôle, délimité par une virgule. Ce sont les rôles que l'utilisateur peut endosser. Vous pouvez configurer le fournisseur d'identité SAML pour renseigner les attributs de rôle en fonction des informations d'attribut utilisateur qu'il met à disposition. Si vous recevez plusieurs rôles dans l'assertion SAML, renseignez le paramètre customRoleArn facultatif quand vous appelez getCredentialsForIdentity. L'utilisateur endosse ce customRoleArn si le rôle correspond à un rôle dans la demande, dans l'assertion SAML.

Authentification des utilisateurs avec un fournisseur d'identité SAML

Pour fédérer avec le fournisseur d'identité basé sur SAML, déterminez l'URL vers laquelle l'utilisateur initie la connexion. La fédération AWS utilise la connexion initiée par le fournisseur d'identité. Dans AD FS 2.0, l'URL prend la forme https://<fqdn>/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices.

Pour ajouter la prise en charge de votre fournisseur d'identité SAML dans Amazon Cognito, commencez par authentifier les utilisateurs avec votre fournisseur d'identité SAML à partir de votre application iOS ou Android. Le code que vous utilisez pour intégrer et authentifier avec le fournisseur d'identité SAML est spécifique aux fournisseurs SAML. Après avoir authentifié votre utilisateur, vous pouvez utiliser les API Amazon Cognito pour fournir l'assertion SAML obtenue à Amazon Cognito Identity.

Android

Si vous utilisez le kit SDK Android, vous pouvez renseigner le mappage des connexions avec l'assertion SAML comme suit.

Map logins = new HashMap(); logins.put("arn:aws:iam::aws account id:saml-provider/name", "base64 encoded assertion response"); // Now this should be set to CognitoCachingCredentialsProvider object. CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(context, identity pool id, region); credentialsProvider.setLogins(logins); // If SAML assertion contains multiple roles, resolve the role by setting the custom role credentialsProvider.setCustomRoleArn("arn:aws:iam::aws account id:role/customRoleName"); // This should trigger a call to the Amazon Cognito service to get the credentials. credentialsProvider.getCredentials();

iOS

Si vous utilisez le SDK iOS, vous pouvez fournir l'assertion SAML dans AWSIdentityProviderManager comme suit.

- (AWSTask<NSDictionary<NSString*,NSString*> *> *) logins { //this is hardcoded for simplicity, normally you would asynchronously go to your SAML provider //get the assertion and return the logins map using a AWSTaskCompletionSource return [AWSTask taskWithResult:@{@"arn:aws:iam::aws account id:saml-provider/name":@"base64 encoded assertion response"}]; } // If SAML assertion contains multiple roles, resolve the role by setting the custom role. // Implementing this is optional if there is only one role. - (NSString *)customRoleArn { return @"arn:aws:iam::accountId:role/customRoleName"; }