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

Avec les pools d'identités Amazon Cognito, vous pouvez authentifier les utilisateurs auprès des fournisseurs d'identité (IdPs) jusqu'à la version 2.0. SAML Vous pouvez utiliser un IdP compatible SAML avec Amazon Cognito pour fournir un flux d'intégration simple à vos utilisateurs. Votre SAML IdP compatible indique IAM les rôles que vos utilisateurs peuvent assumer. De cette façon, différents utilisateurs peuvent recevoir différents ensembles d'autorisations.

Configuration de votre pool d'identités pour un SAML IdP

Les étapes suivantes décrivent comment configurer votre pool d'identités pour utiliser un IdP SAML basé sur un IdP.

Pour ajouter un fournisseur SAML d'identité (IdP)
  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'SAMLidentité IAM IdPs dans votre Compte AWS. Si vous souhaitez ajouter un nouveau SAML fournisseur, choisissez Create new provider pour accéder à la IAM console.

  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 SAML IdP

Après avoir créé le SAML fournisseur, configurez votre SAML IdP pour ajouter la confiance des parties fiables entre votre IdP et. AWS Dans de nombreux IdPs cas, vous pouvez spécifier un URL que l'IdP peut utiliser pour lire les informations et les certificats des parties fiables figurant dans un XML document. Pour AWS cela, vous pouvez utiliser https://signin.aws.amazon.com/static/saml-metadata.xml. L'étape suivante consiste à configurer la réponse d'SAMLassertion de votre IdP pour renseigner les demandes nécessaires. AWS Pour plus de détails sur la configuration de la réclamation, voir Configuration des SAML assertions pour la réponse d'authentification.

Lorsque votre SAML IdP inclut plusieurs certificats de signature dans les SAML métadonnées, lors de la connexion, votre groupe d'utilisateurs détermine que l'SAMLassertion est valide si elle correspond à un certificat des métadonnées. SAML

Personnalisation de votre rôle d'utilisateur avec SAML

Lorsque vous l'utilisez SAML avec Amazon Cognito Identity, vous pouvez personnaliser le rôle de l'utilisateur final. Amazon Cognito prend uniquement en charge le flux amélioré avec l'SAMLIdP basé. Il n'est pas nécessaire de spécifier un rôle authentifié ou non authentifié pour que le pool d'identités utilise un IdP baséSAML. L'attribut https://aws.amazon.com/SAML/Attributes/Role claim spécifie une ou plusieurs paires de rôle et de fournisseur séparés par des virgules. ARN Ce sont les rôles que l'utilisateur peut endosser. Vous pouvez configurer l'SAMLIdP pour renseigner les attributs de rôle en fonction des informations d'attributs utilisateur disponibles auprès de l'IdP. Si vous recevez plusieurs rôles dans l'SAMLassertion, renseignez le customRoleArn paramètre facultatif lorsque vous appelezgetCredentialsForIdentity. L'utilisateur suppose cela customRoleArn si le rôle correspond à l'un des rôles figurant dans l'SAMLassertion.

Authentification des utilisateurs avec un IdP SAML

Pour fédérer avec l'IdP SAML basé, déterminez URL l'endroit où l'utilisateur initie la connexion. AWS la fédération utilise une connexion initiée par l'IDP. Dans AD FS 2.0, URL il prend la forme dehttps://<fqdn>/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices.

Pour ajouter la prise en charge de votre SAML IdP dans Amazon Cognito, authentifiez d'abord les utilisateurs auprès de SAML votre fournisseur d'identité depuis votre application iOS ou Android. Le code que vous utilisez pour intégrer et authentifier l'SAMLIdP est spécifique aux SAML fournisseurs. Après avoir authentifié votre utilisateur, vous pouvez utiliser Amazon APIs Cognito pour fournir l'assertion SAML résultante à Amazon Cognito Identity.

Vous ne pouvez pas répéter ou rejouer une SAML assertion dans la Logins carte de votre API demande de pool d'identités. Une SAML assertion rejouée possède un ID d'assertion qui duplique l'ID d'une demande précédente. API APIles opérations qui peuvent accepter une SAML assertion sur la Logins carte incluent GetIdGetCredentialsForIdentity, GetOpenIdToken, et GetOpenIDTokenForDeveloperIdentity. Vous pouvez réexécuter un ID d'SAMLassertion une fois par API demande dans le flux d'authentification d'un pool d'identités. Par exemple, vous pouvez fournir la même SAML assertion dans une GetId demande et dans une GetCredentialsForIdentity demande ultérieure, mais pas dans une deuxième GetId demande.

Android

Si vous utilisez AndroidSDK, vous pouvez remplir la carte des connexions avec l'SAMLassertion 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 iOSSDK, vous pouvez fournir l'SAMLassertion 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"; }