Comment puis-je résoudre les erreurs liées à la fédération OIDC IdP dans IAM ?

Lecture de 11 minute(s)
0

Je souhaite résoudre les erreurs que je rencontre lorsque j'utilise un fournisseur d'identité (IdP) OpenID Connect (OIDC) dans AWS Identity and Access Management (IAM).

Résolution

Vous pouvez rencontrer les erreurs suivantes lorsque vous utilisez un IdP OIDC pour la fédération avec IAM.

Important : Ajoutez /.well-known/openid-configuration à la fin de l'URL de votre fournisseur d'identité OIDC pour consulter le document de configuration et les métadonnées du fournisseur.

Remarque : Remplacez server.example.com par le nom du serveur du fournisseur d'identité OIDC. Remplacez oidc_issuer_url par l'URL d'émetteur du fournisseur d'identité OIDC.

« An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: No OpenIDConnect provider found in your account. »

Cette erreur se produit lorsque le fournisseur d'identité OIDC n'est pas correctement référencé lorsque vous appelez l'opération d'API AssumeRoleWithWebIdentity.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez l'ARN du fournisseur d'identité OIDC transmis lorsque vous appelez l'opération d'API AssumeRoleWithWebIdentity.
    Remarque : Un slash est automatiquement ajouté à la fin de l'ARN de l'IdP OIDC lorsque vous utilisez l'interface de ligne de commande AWS (AWS CLI) pour votre configuration. Le slash n'est pas ajouté lorsque vous utilisez les kits SDK AWS.
    Remarque : Si vous recevez des messages d’erreur lors de l’exécution de commandes AWS CLI, vérifiez que vous utilisez bien une version récente de l’AWS CLI.
  2. Vérifiez que la politique de confiance pour le rôle IAM inclut les principaux qui sont fédérés via le fournisseur d'identité OIDC.
    Important : Les rôles intercomptes ne sont pas pris en charge. Le fournisseur d'identité OIDC et le rôle IAM doivent appartenir au même compte.
  3. Vérifiez que l'URL du fournisseur d'identité OIDC transmise dans la requête AWS Security Token Service (AWS STS) correspond à l'URL du fournisseur d'identité OIDC IAM. L'URL de la requête AWS STS peut être incluse dans le message d'erreur.

« Your request has a problem. Please see the following details. Please check .well-known/openid-configuration of provider: oidc_issuer_url is valid. »

Cette erreur se produit lorsque l'URL du fournisseur d'identité OIDC est incorrecte.

Pour résoudre l'erreur, vérifiez que l'URL du fournisseur d'identité OIDC répond aux exigences suivantes :

  • L'URL est unique au sein de votre compte AWS.
  • L'URL présente la bonne casse.
  • L'URL commence par https://
  • L'URL ne contient pas de numéro de port.

Si l'erreur persiste, procédez comme suit :

  1. Ajoutez un slash (/) à la fin de l'URL de l'émetteur.
  2. Obtenez manuellement l'empreinte numérique du fournisseur d'identité OIDC.
  3. Créez le fournisseur d'identité OIDC dans l'AWS CLI.

« Your request has a problem. Please see the following details. Could not connect to openid configuration of provider: oidc_issuer_url. »

Cette erreur se produit lorsque l'émetteur du fournisseur d'identité OIDC présente une chaîne de certificats non-fonctionnelle ou inclut des certificats dupliqués ou supplémentaires.

Pour résoudre cette erreur, procédez comme suit :

  1. Installez et configurez l'outil de ligne de commande OpenSSL, si nécessaire.
    **Remarque :**Remplacez keys.example.com par l'URL mappée à jwks_uri dans les métadonnées du fournisseur d'identité OIDC.

  2. Dans l'outil de ligne de commande OpenSSL, exécutez la commande openssl-s_client pour télécharger la chaîne de certificats du fournisseur d'identité OIDC.

    openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
  3. Vérifiez la chaîne de certificats du fournisseur d'identité OIDC. La chaîne doit commencer par le domaine ou l'URL de l'émetteur, puis le certificat intermédiaire et se terminer par le certificat racine.

Si l'ordre de la chaîne des certificats est différent, vous recevez une erreur d’incompatibilité de signature et STS ne parvient pas à valider le jeton Web JSON (JWT). Pour plus d'informations sur les normes de chaîne de certificats, consultez certificate_list dans RFC 5246 sur le site Web de RFC Series.

« An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: The ID Token provided is not a valid JWT. »

Cette erreur se produit lorsque le JWT est chiffré ou utilise des caractères non pris en charge lorsque le fournisseur d'identité OIDC se fédère dans IAM.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez que l'en-tête JWT contient des valeurs de paramètres au format « chaîne ». Tout autre type de données dans l'en-tête JWT génère une erreur.
  2. Exécutez un outil de décodage en ligne pour vérifier les informations transmises dans l'en-tête JWT.
  3. Supprimez les valeurs inutiles des paramètres d'en-tête ou modifiez le type de données en chaîne.

Remarque : Les OIDC personnalisés prennent en charge les algorithmes de signature suivants : RS256, RS384, RS512, HS256, HS384 et HS512. La fédération OIDC vers IAM ne prend pas en charge les JWT chiffrés.

« An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Couldn't retrieve verification key from your identity provider, please reference AssumeRoleWithWebIdentity documentation for requirements. »

Vous pouvez rencontrer cette erreur pour les raisons suivantes :

  • Les points de terminaison .well-known et jwks_uri du fournisseur d'identité OIDC ne sont pas accessibles depuis l'Internet public.
  • Un pare-feu personnalisé bloque la requête d’API.
  • Il existe une latence de plus de 5 secondes dans les requêtes d'API entre le fournisseur d'identité OIDC et le point de terminaison STS.
  • Les requêtes sont limitées car le JSON Web Key Set (JWKS) contient un grand nombre de clés qui empêchent STS de vérifier la clé de l'IdP OIDC.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez que les points de terminaison .well-known et jwks_uri du fournisseur d'identité OIDC sont publiquement accessibles.
  2. Vérifiez les paramètres du pare-feu pour vous assurer que les domaines ne figurent pas dans une liste de refus.
  3. Vérifiez la latence pour l'ensemble du fonctionnement. Utilisez le backoff exponentiel si nécessaire.
  4. Supprimez les clés inutiles du JWKS et testez la configuration.

Pour plus d'informations sur la résolution de cette erreur, consultez la section Comment résoudre l'erreur d'appel « InvalidIdentityToken » de l'API AWS STS AssumeRoleWithWebIdentity ?

Remarque : Cette erreur InvalidIdentityToken n'est pas enregistrée dans le fichier journal AWS CloudTrail car l'échec se produit côté client.

« An unknown error occurred for AssumeRoleWithWebIdentity: Unsupported condition keys used. »

Cette erreur se produit lorsque vous utilisez des clés de condition non prises en charge dans la politique de confiance du rôle IAM du fournisseur d'identité OIDC.

Pour résoudre l'erreur, créez une politique de confiance avec les clés disponibles pour la fédération d’identité Web AWS.

« An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Incorrect token audience. »

Cette erreur se produit lorsque la réclamation aud (audience) JWT ne correspond pas à l'identifiant unique d'une application qui utilise le fournisseur d'identité OIDC.

Pour connaître l’audience du fournisseur OIDC IAM, exécutez la commande suivante :

aws iam get-open-id-connect-provider --open-id-connect-provider-arn OIDC_ARN_Example-provider

Remarque : Remplacez OIDC_ARN_Example-provider par l'ARN de votre fournisseur OIDC.

La valeur d'audience doit correspondre à l'ID client de l'application.

« Returned thumbprint (too large for IAM). »

Cette erreur se produit lorsque vous essayez d'ajouter manuellement une empreinte numérique incorrecte au fournisseur d'identité OIDC dans IAM.

Pour résoudre l'erreur, obtenez manuellement l'empreinte numérique de votre fournisseur d'identité OIDC.

« InvalidIdentityToken : Token audience contains more than one audience while authorized party is not present. »

Cette erreur se produit lorsque plusieurs audiences sont définies dans un jeton JWT. AWS ne prend pas en charge les jetons JWT avec plusieurs audiences, mais vous pouvez configurer un fournisseur d'identité OIDC avec plusieurs ID client en tant qu'audiences.

Pour résoudre cette erreur, procédez comme suit :

  1. Assurez-vous qu'une seule audience est définie dans le jeton JWT.
  2. Enregistrez chacune de vos applications auprès d'un fournisseur d'identité OIDC distinct pour permettre aux utilisateurs de se connecter depuis plusieurs IdP.
  3. Créez et gérez le fournisseur d'identité OIDC et configurez différents rôles IAM pour chaque valeur d'audience, si nécessaire.

Remarque : Pour plus d'informations sur les fournisseurs d'identité OIDC, consultez la section Création d'un rôle pour l'identité Web ou la fédération OIDC (console).

« Unable to configure OpenID Connect configuration with a private application (For example: Gitlab instance). »

Cette erreur se produit lorsque le fournisseur d'identité OIDC est privé car les points de terminaison .well-known/openid-configuration et jwks_uri ne sont pas publiquement accessibles sur Internet.

Pour résoudre cette erreur, procédez comme suit :

  1. Configurez les points de terminaison .well-known/openid-configuration et jwks_uri afin qu'ils soient accessibles via Internet.
    Remarque : Les configurations de proxy pour la fédération OIDC vers IAM ne sont pas prises en charge. L'ajout manuel d'une empreinte numérique n'aide pas, car les requêtes AssumeRoleWithWebIdentity adressées à STS échouent toujours car le point de terminaison jwks_uri n'est pas publiquement accessible. STS ne peut pas valider la signature dans le JWT pour émettre des informations d'identification.
  2. Ajoutez les adresses IP AWS requises à une liste d'autorisation. Utilisez ensuite l'opération d'API AssumeRoleWithWebIdentity pour générer des informations d'identification temporaires dans votre compte AWS. Utilisez les plages d'adresses IP AWS pour les adresses des services IAM et STS.
  3. Utilisez Amazon Cognito pour générer des informations d'identification client que vous pouvez utiliser pour fédérer depuis votre application vers un groupe d'utilisateurs Amazon Cognito. Dans le groupe d'utilisateurs, vous pouvez assumer un rôle à partir d'un groupe d'identités Amazon Cognito qui a accès à des rôles AWS spécifiques de votre compte.
    Vous pouvez utiliser les informations d'identification du client pour vous authentifier dans les groupes d'identités Amazon Cognito. Avec les informations d'identification du client, vous pouvez utiliser un client unique pour chaque application afin de différencier les niveaux d'accès.
    Important : Pour vous authentifier auprès d'Amazon Cognito, vous devrez peut-être écrire du code en plus, car Amazon Cognito doit être inclus dans la tâche de l'application.
  4. Utilisez une autorité de certification privée pour implémenter IAM Roles Anywhere.
    Remarque : Pour plus d'informations sur l'autorité de certification privée, consultez la section Qu'est-ce qu'AWS Private CA ?
  5. Définissez un point de terminaison de VPC d'interface pour AWS STS afin de limiter votre trafic d'authentification via un VPC.
    Remarque : Pour plus d'informations, consultez la section Utilisation des points de terminaison de VPC de l'interface AWS STS.

« OpenIdInvalidIDPResponseException error while obtaining the thumbprint of the IAM OIDC identity provider. »

Cette erreur se produit lorsque les attributs obligatoires ne sont pas inclus dans les métadonnées du fournisseur d'identité OIDC. Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez les métadonnées et les attributs requis du fournisseur d'identité OIDC.
  2. Si vous découvrez des attributs manquants, contactez le fournisseur d'identité OIDC pour discuter des informations manquantes.
    Remarque : Pour plus d'informations sur les modèles de métadonnées et les attributs requis, consultez la section Obtention des informations de configuration du fournisseur OpenID sur la page Web Errata d’OpenID Connect.

« Invalid login token. OpenIDConnect provider's HTTPS certificate doesn't match configured thumbprint. »

Cette erreur se produit lorsque l'empreinte numérique utilisée dans le fournisseur d'identité OIDC a expiré ou ne correspond pas à l'autorité de certification.

Pour résoudre cette erreur, procédez comme suit :

  1. Obtenez manuellement l'empreinte numérique.
  2. Mettez à jour l'empreinte numérique par rapport au fournisseur d'identité OIDC avec UpdateOpenIDConnectProviderThumbprint ou la console de gestion AWS.

« AccessDenied error logged for AssumeRoleWithWebIdentity. »

Vous pouvez rencontrer cette erreur pour les raisons suivantes :

  • L'ARN du rôle IAM transmis dans les paramètres de la requête est incorrect.
  • Les autorisations configurées sur le principal qui exécute l'action AssumeRoleWithWebIdentity sont insuffisantes.
  • La valeur du paramètre DurationSeconds est supérieure à la durée maximale définie pour le rôle IAM.

Pour résoudre cette erreur, procédez comme suit :

  1. Assurez-vous que le bon ARN du rôle IAM est transmis dans l'action AssumeRoleWithWebIdentity.
    Remarque : Les ARN de rôle font la distinction entre majuscules et minuscules.
  2. Vérifiez que les autorisations IAM nécessaires sont définies.
  3. Appliquez des politiques de contrôle des services (SCP).
  4. Vérifiez que aws:TagSession est autorisé dans la politique de confiance lorsque la requête contient des balises de session.
  5. Assurez-vous que le paramètre de durée de session maximale pour le rôle IAM est toujours supérieur ou égal au paramètre SessionDuration.
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an