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 個答案
2
已接受的答案

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
已回答 2 年前
profile pictureAWS
專家
Chris_G
已審閱 2 年前
0

seems to be

已回答 1 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南