CognitoIdentityCredentials不提供访问权限

时间:2020-05-20 14:09:31

标签: amazon-web-services amazon-cognito

我不确定我是否正确理解了该过程,但是我正在使用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凭证吗?

2 个答案:

答案 0 :(得分:1)

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

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

// 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'});

答案 1 :(得分:0)

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