用于登录亚马逊的 AWS Cognito 导致 NotAuthorizedException
AWS Cognito for Login with Amazon causing NotAuthorizedException
试图找出我在这里做错了什么。
LWA(使用亚马逊登录)工作正常。我取回访问令牌,立即设置登录参数:
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:2a...',
Logins: {
'www.amazon.com': access_token
}
});
下一步,当我通过以下方式拨打电话以获取登录详细信息时:
AWS.config.credentials.get(err,data){
console.log(data);
console.log(error);
};
它调用POST https://cognito-identity.us-east-1.amazonaws.com/
并传递以下数据{"IdentityPoolId":"us-east-1:2a...","Logins":{"www.amazon.com":"Atza%7C..."}}
不幸的是,那个电话的回应总是400 x-amzn-ErrorMessage:Invalid login token. x-amzn-ErrorType:NotAuthorizedException:
我在 Cognito 中创建了一个联合身份池,并将安全配置文件 ID (LWA) 指定为 Amazon App Id。 Cognito 身份创建向导还为 Auth 和 UnAuth 创建了必要的 IAM 角色,这似乎具有适当的策略集。启用未经身份验证的身份。
我真的迷路了。我只需要在我的 Web 应用程序上获得基于 LWA 的身份验证,这样当我对 API 网关进行 REST 调用时,我就可以保护资源。此外,我没有将 AWS SDK 用于 Cognito 以外的任何用途。
您的代码看起来不错。在两种情况下可能会引发此错误。
- 服务获取的访问令牌已过期。
- 访问令牌来自不同的 LWA 应用程序,与您的身份池中配置的应用程序不同。
您能否确认这两种情况都不是造成此问题的原因?
试图找出我在这里做错了什么。
LWA(使用亚马逊登录)工作正常。我取回访问令牌,立即设置登录参数:
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:2a...',
Logins: {
'www.amazon.com': access_token
}
});
下一步,当我通过以下方式拨打电话以获取登录详细信息时:
AWS.config.credentials.get(err,data){
console.log(data);
console.log(error);
};
它调用POST https://cognito-identity.us-east-1.amazonaws.com/
并传递以下数据{"IdentityPoolId":"us-east-1:2a...","Logins":{"www.amazon.com":"Atza%7C..."}}
不幸的是,那个电话的回应总是400 x-amzn-ErrorMessage:Invalid login token. x-amzn-ErrorType:NotAuthorizedException:
我在 Cognito 中创建了一个联合身份池,并将安全配置文件 ID (LWA) 指定为 Amazon App Id。 Cognito 身份创建向导还为 Auth 和 UnAuth 创建了必要的 IAM 角色,这似乎具有适当的策略集。启用未经身份验证的身份。
我真的迷路了。我只需要在我的 Web 应用程序上获得基于 LWA 的身份验证,这样当我对 API 网关进行 REST 调用时,我就可以保护资源。此外,我没有将 AWS SDK 用于 Cognito 以外的任何用途。
您的代码看起来不错。在两种情况下可能会引发此错误。
- 服务获取的访问令牌已过期。
- 访问令牌来自不同的 LWA 应用程序,与您的身份池中配置的应用程序不同。
您能否确认这两种情况都不是造成此问题的原因?