簡體   English   中英

如何使用Cognito Identity以信任關系指定Amazon AWS User Pool

[英]How to specify Amazon AWS User Pool in trust relationship with Cognito Identity

我有AWS Cognito用戶池登錄工作,我有一個聯合身份池,其中連接了用戶池,並在控制台中指定為身份驗證提供程序。

但現在我正努力在Cognito用戶池和Cognito Identity Pool之間建立信任。

在下面的代碼段中,您可以看到我對未經身份驗證的角色的信任關系。 (經過身份驗證的角色版本目前完全匹配,最終它不會,但我將它們設置為相同並賦予兩個角色特權以試圖使其工作)。 xxxx是預填充的CognitoIdentityId,yyyy是我的帳號,zzzz是Cognito用戶池ID。

當我嘗試創建信任關系並使用應用程序時,我不斷收到錯誤。 這是最常見的錯誤:

getCredentialsWithCognito:authenticated:customRoleArn:]_block_invoke |     GetCredentialsForIdentity failed. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=8 "(null)" UserInfo={__type=InvalidIdentityPoolConfigurationException, message=Invalid identity pool configuration. Check assigned IAM roles for this pool.}]
2016-08-29 21:50:11.634 signin[7778:1222711] AWSiOSSDK v2.4.7 [Error]    AWSCredentialsProvider.m line:577 | __44-[AWSCognitoCredentialsProvider credentials]_block_invoke.352 | Unable to refresh. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=8 "(null)" UserInfo={__type=InvalidIdentityPoolConfigurationException, message=Invalid identity pool configuration. Check assigned IAM roles for this pool.}]

信任關系:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "cognito-identity.amazonaws.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "cognito-identity.amazonaws.com:aud": "us-east-1:xxxxxxxxx”,
              "cognito-idp.amazonaws.com:aud": "arn:aws:cognito-idp:us-east-1:yyyyyyyy:userpool/zzzzzzzzz”
            },
            "ForAnyValue:StringLike": {
              "cognito-identity.amazonaws.com:amr": "unauthenticated",
              "cognito-idp.amazonaws.com:amr": "unauthenticated"
            }
          }
        }
      ]
    }

部分問題可能是我不理解“cognito-idp.amazonaws.com:aud”的格式:“cognito-idp.amazonaws.com:aud”這一行。 我懷疑我應該以某種方式更改格式或指定amazonaws.com的不同域作為aud,但我已經嘗試了十幾種組合並且失敗了。

所以問題是:如何指定信任關系。

一個輔助問題是:如果我的用戶使用用戶池進行身份驗證,並且如果正確指定了信任關系,那么我的用戶是否會接受指定該信任的角色? 或者用戶是否僅以某種方式承擔一個角色,如果存在多個信任關系,Cognito如何選擇該角色?

信任關系政策存在三個問題,

  1. 不需要“cognito-idp.amazonaws.com:aud”,這個角色由身份池承擔,用戶池只是一個提供者,它不再相關
  2. 不需要“cognito-idp.amazonaws.com:amr”
  3. 如果這是經過身份驗證的角色,則應該對amr進行身份驗證而不是未經身份驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM