【问题标题】:CognitoIdentityCredentials not providing accessCognitoIdentityCredentials 不提供访问权限
【发布时间】:2020-09-06 22:45:15
【问题描述】:

我不确定我是否正确理解了该过程,但我正在使用 Cognito 用户池并进行身份验证。我按预期收到了我的代币。我正在尝试根据 documentation 调用 CognitoIdentityCredentials 作为我的 onSuccess 身份验证流程的一部分。

AWS.config.update({
    credentials: new AWS.CognitoIdentityCredentials({
        IdentityPoolId: IdentityPoolId,
    }),
    region: 'us-east-1'
});

我已将 IAM 角色分配给我的 Cognito 身份池,并且一切看起来都已正确配置。但是,我没有收到任何 AWS 凭证。

文档说明:

默认情况下,此提供商使用 AWS.CognitoIdentity.getCredentialsForIdentity() 服务操作获取凭证,该操作需要 IdentityId 或 IdentityPoolId(Amazon Cognito 身份池 ID),用于调用 AWS.CognitoIdentity.getId()获取一个 IdentityId。

我是否需要手动调用 AWS.CognitoIdentity.getId() 来获取 AWS 凭证?

【问题讨论】:

    标签: amazon-web-services amazon-cognito


    【解决方案1】:

    如果您使用的是经过身份验证的身份池,您应该获取带有 id_token 的 AWS 凭证。

    【讨论】:

      【解决方案2】:

      不,AWS.CognitoIdentityCredentials() 呼叫 getId()

      您只需在AWS.CognitoIdentityCredentials() 的参数的Logins 映射中提供从您的 Cognito 用户池进行身份验证后收到的id_token,如"Accessing AWS Resources Using an Identity Pool" 所示。

      // Add the User's Id Token to the Cognito credentials login map.
      AWS.config.credentials = new AWS.CognitoIdentityCredentials({
          IdentityPoolId: 'YOUR_IDENTITY_POOL_ID',
          Logins: {
              'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': 'YOUR ID_TOKEN RETURNED FROM AUTHENTICATION WITH COGNITO USER POOLS'
          }
      }, { region: 'us-east-1'});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        • 2019-10-24
        • 2021-10-28
        • 1970-01-01
        • 2019-01-09
        相关资源
        最近更新 更多