角色信任和許可 - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

角色信任和許可

這些角色的不同之處,在於其信任關係。以下為未驗證的角色的範例信任政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }

此政策授予來自 cognito-identity.amazonaws.com (OpenID Connect 權杖的發行者) 的聯合身分使用者許可以擔任這個角色。此外,政策會限制權杖的 aud(在此案例中為身分集區 ID) 來配合身分集區。最後,該政策指定 Amazon Cognito GetOpenIdToken API 操作發出的令牌的多值amr聲明的其中一個陣列成員具有該值。unauthenticated

當 Amazon Cognito 建立權杖時,會將權杖的 amr 設為 unauthenticatedauthenticated。如果 amrauthenticated,該權杖包括身分驗證期間使用的任何供應商。這表示,您只要將 amr 條件變更如下,即可建立只信任透過 Facebook 登入之使用者的角色:

"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }

在變更角色的信任關係時,或是嘗試跨身分集區使用角色時,請小心謹慎。如果您未正確設定角色以信任您的身分集區,則會STS產生例外狀況,如下所示:

AccessDenied -- Not authorized to perform sts:AssumeRoleWithWebIdentity

如果您看到此訊息,請檢查您的身分集區和身分驗證類型是否有適當的角色。