Using a Cognito custom attribute as a principal tag in an IAM policy condition is not working

1

Here's the setup:

  • User Pool custom attribute: custom:journalSubscription
  • User Pool app client: has read/write permission for the custom attribute
  • Example user: has custom attribute custom:journalSubscription set to true
  • Identity Pool ABAC custom mapping: "Attribute name" of custom:journalSubscription ---maps to---> "Tag key for principal" of journalSubscription
  • IAM policy: uses a condition for "StringEquals" where "aws:PrincipalTag/journalSubscription" must equal "true"

Problem: the SDK call fails with this error:

User: <<AUTH_ROLE>> is not authorized to perform: dynamodb:GetItem on resource: <<ARN_FOR_MY_DynamoDB_TABLE>> because no identity-based policy allows the dynamodb:GetItem action

Note: the SDK call works fine with an IAM policy that uses a condition for a non-custom attribute such as "aws:PrincipalTag/email". It's just that for custom attributes, the call fails.

How can I make this work?

2 réponses
2
Réponse acceptée

In the app client settings, for the OpenID Connect scopes, add profile. This allows the app client to retrieve "profile" attributes which seems to include custom attributes.

profile picture
répondu il y a 2 ans
profile pictureAWS
EXPERT
Chris_G
vérifié il y a 2 ans
0

seems to be

répondu il y a un an

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions