AWS Cognito:“访问令牌不包含openid范围”

时间:2020-01-08 11:37:58

标签: oauth-2.0 amazon-cognito

尝试从AWS Cognito提取用户属性时遇到此问题。

由于复制并粘贴了它,所以我不能说它怎么可能是“无效令牌”,而且我还要确保它是accessToken而不是idToken或其他任何东西。

此网站上还有其他一些类似的问题,但不能解决我的问题:

"Access token does not contain openid scope" in AWS Cognito

Access token does not have the openid scope

更新:此处是我的应用客户端配置

enter image description here

2 个答案:

答案 0 :(得分:2)

好的,我告诉你细节。

简短答案:您必须使用 oauth2 Cognito身份验证,而不是在SDK中使用默认的Cognito身份验证API。

让我解释为什么会遇到错误:您正在使用Cognito身份验证,然后Cognito向您返回了一个不包含“ openid”范围的“访问令牌”,您可以在此处粘贴该令牌以进行检查:https://jwt.io/#encoded-jwt

您必须使用 oauth2 身份验证来获取包含“ openid”的“访问令牌”。为此,您必须使用Hosted UI或AUTHORIZATION Endpoint来获取“访问令牌”。

您可以尝试通过访问链接来托管Hosted UI(请编辑您的域+ response_type + client_id + redirect_uri):https://tsunami.auth.us-east-2.amazoncognito.com/login?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_SIGNIN_URL

您可以使用授权端点https://tsunami.auth.us-east-2.amazoncognito.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_SIGNIN_URL&identity_provider=COGNITO,它将重定向到托管用户界面

答案 1 :(得分:0)

获取用户信息是一个开放ID连接功能,并且需要令牌中的openid范围。

我怀疑问题出在您通过身份验证并获得令牌时未指定此范围。

通常,您在进行身份验证时配置如下范围:

  • openid个人资料电子邮件

您还可以在Cognito中配置的OAuth客户端信任条目中提供这些密码

  • 配置文件范围使您能够从用户信息端点获取用户名
  • 电子邮件范围使您能够从用户信息端点获取电子邮件

有关示例,请参见step 9 of my write up