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