本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
角色信任和許可
這些角色的不同之處,在於其信任關係。以下為未驗證的角色的範例信任政策:
{ "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
設為 unauthenticated
或 authenticated
。如果 amr
是 authenticated
,該權杖包括身分驗證期間使用的任何供應商。這表示,您只要將 amr
條件變更如下,即可建立只信任透過 Facebook 登入之使用者的角色:
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }
在變更角色的信任關係時,或是嘗試跨身分集區使用角色時,請小心謹慎。如果您未正確設定角色以信任您的身分集區,則會STS產生例外狀況,如下所示:
AccessDenied -- Not authorized to perform sts:AssumeRoleWithWebIdentity
如果您看到此訊息,請檢查您的身分集區和身分驗證類型是否有適當的角色。