Configuration d'un fournisseur SAML en tant qu'IdP de pool d'identités - 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.

Configuration d'un fournisseur SAML en tant qu'IdP de pool d'identités

Amazon Cognito prend en charge l'authentification auprès des fournisseurs d'identité (IdPs) 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.

Pour ajouter un fournisseur d'identité (IdP) SAML
  1. Choisissez Groupes d'identités dans la console Amazon Cognito. Sélectionnez une réserve d'identités.

  2. Choisissez l'onglet Accès utilisateur.

  3. Sélectionnez Ajouter un fournisseur d'identité.

  4. Choisissez SAML.

  5. Choisissez un fournisseur d'identité SAML IdPs dans l'IAM de votre. Compte AWS Pour ajouter un nouveau fournisseur SAML, choisissez Créer un nouveau fournisseur afin d'accéder à la console IAM.

  6. Pour définir le rôle demandé par Amazon Cognito lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, configurez Paramètres de rôle.

    1. Vous pouvez attribuer aux utilisateurs de ce fournisseur d'identité le rôle par défaut que vous avez configuré lorsque vous avez configuré votre rôle authentifié, ou vous pouvez sélectionner Choisir un rôle avec des règles.

      1. Si vous avez choisi Choisir un rôle avec des règles, saisissez la demande source issue de l'authentification de votre utilisateur, l'opérateur avec lequel vous souhaitez comparer ce champ standard, la valeur qui entraînera une correspondance avec ce choix de rôle et le rôle que vous souhaitez attribuer si l'attribution de rôle correspond. Sélectionnez Ajouter un autre pour créer une règle supplémentaire basée sur une condition différente.

      2. Choisissez une résolution de rôle. Lorsque les champs standard de votre utilisateur ne correspondent pas à vos règles, vous pouvez refuser les informations d'identification ou émettre des informations d'identification pour votre rôle authentifié.

  7. Pour modifier les balises de principal qu'Amazon Cognito attribue lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, configurez Attributs de contrôle d'accès.

    1. Pour n'appliquer aucune balise de principal, choisissez Inactif.

    2. Pour appliquer les balises de principal en fonction des champs standard sub et aud, choisissez Utiliser les mappages par défaut.

    3. Pour créer votre propre schéma personnalisé d'attributs pour les balises de principal, choisissez Utiliser des mappages personnalisés. Saisissez ensuite une clé de balise que vous souhaitez obtenir à partir de chaque demande que vous souhaitez représenter dans une balise.

  8. Sélectionnez Enregistrer les modifications.

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. Dans de nombreux IdPs cas, vous pouvez spécifier une URL que l'IdP peut utiliser pour lire les informations et les certificats des parties fiables à partir d'un document XML. 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.

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.

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.

Vous ne pouvez pas répéter ni réutiliser une assertion SAML dans la carte Logins de votre demande d'API de groupe d'identités. Une assertion SAML réutilisée possède un ID d'assertion qui duplique l'ID d'une demande d'API précédente. Les opérations d'API qui peuvent accepter une assertion SAML sur la Logins carte incluent GetId, GetCredentialsForIdentityGetOpenIdToken, et GetOpenID TokenForDeveloperIdentity. Vous pouvez rejouer un ID d'assertion SAML une fois par demande d'API dans un flux d'authentification des groupes d'identités. Par exemple, vous pouvez fournir la même assertion SAML dans une demande GetId et dans une demande GetCredentialsForIdentity ultérieure, mais pas dans une seconde demande GetId.

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"; }