Oauth 2.0 AWS cognito:“;访问令牌不包含openid作用域;

Oauth 2.0 AWS cognito:“;访问令牌不包含openid作用域;,oauth-2.0,amazon-cognito,Oauth 2.0,Amazon Cognito,我在尝试从AWS Cognito获取用户属性时遇到了这个问题 我不知道它怎么可能是“无效令牌”,因为我已经复制并粘贴了它,而且我还必须确保它是accessToken而不是idToken或其他任何东西 这个网站上还有一些类似的问题,但它们没有解决我的问题: 更新:这里是我的应用程序客户端配置 获取用户信息是一项开放式id连接功能,需要令牌中的openid范围 我怀疑问题源于在您进行身份验证并获取令牌时未指定此范围 在进行身份验证时,通常会配置以下作用域: openid配置文件电子邮件 您

我在尝试从AWS Cognito获取用户属性时遇到了这个问题

我不知道它怎么可能是“无效令牌”,因为我已经复制并粘贴了它,而且我还必须确保它是
accessToken
而不是
idToken
或其他任何东西

这个网站上还有一些类似的问题,但它们没有解决我的问题:

更新:这里是我的应用程序客户端配置


获取用户信息是一项开放式id连接功能,需要令牌中的openid范围

我怀疑问题源于在您进行身份验证并获取令牌时未指定此范围

在进行身份验证时,通常会配置以下作用域:

  • openid配置文件电子邮件
您还可以在Cognito中配置的OAuth客户机信任条目中提供这些

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

有关示例,请参见获取用户信息是一项开放式id连接功能,需要令牌中的openid范围

我怀疑问题源于在您进行身份验证并获取令牌时未指定此范围

在进行身份验证时,通常会配置以下作用域:

  • openid配置文件电子邮件
您还可以在Cognito中配置的OAuth客户机信任条目中提供这些

  • 配置文件范围使您能够从用户信息端点获取用户名
  • 电子邮件作用域使您能够从用户信息端点获取电子邮件
请参见示例

好的,我为您提供了详细信息

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

让我解释一下您遇到错误的原因:您正在使用Cognito身份验证,然后Cognito返回给您一个不包含“openid”作用域的“访问令牌”,您可以将令牌粘贴到此处以检查:

您必须使用oauth2身份验证来获取包含“openid”的“访问令牌”。为了做到这一点,您必须使用托管UI或获取“访问令牌”

您可以通过访问链接尝试托管UI(请编辑您的域+响应类型+客户端id+重定向uri):

您可以使用授权端点:它将重定向到托管用户界面

好的,我为您提供了详细信息

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

让我解释一下您遇到错误的原因:您正在使用Cognito身份验证,然后Cognito返回给您一个不包含“openid”作用域的“访问令牌”,您可以将令牌粘贴到此处以检查:

您必须使用oauth2身份验证来获取包含“openid”的“访问令牌”。为了做到这一点,您必须使用托管UI或获取“访问令牌”

您可以通过访问链接尝试托管UI(请编辑您的域+响应类型+客户端id+重定向uri):



您可以使用授权端点:它将重定向到托管用户界面

您可以在jwt.io中输入令牌并向我们显示它包含哪些作用域吗?大家好,您可以帮助在Cognito中显示应用程序客户端设置并确保选中了openid吗?@PhanViệ你是对的,我忘了检查应用程序客户端配置中的
openid
,但在检查了option@LêQuangBảo请帮助检查我的答案并向我提出任何问题,因为我确信它是有效的。你能在jwt.io中输入令牌并向我们显示它包含哪些作用域吗?嗨,伙计们,你能帮助在Cognito中显示应用程序客户端设置并确保检查了openid吗?@PhanViệ你是对的,我忘了检查应用程序客户端配置中的
openid
,但在检查了option@LêQuangBảo请帮助检查我的答案,并向我提出任何问题,因为我确信它是有效的。这还取决于你用来获取代币的库。在上一篇文章中,我似乎记得一些特定于AWS的库不允许您在进行身份验证时指定作用域。如果是这样,我会抛弃它们,转而使用基于标准的库。我通过
amazon cognito identity js
获得令牌,我如何在身份验证请求中指定范围?@LêQuangBảo将托管UI或授权端点用于OAuth2,并将Cognito用户池作为Provder请求作用域。这还取决于用于获取令牌的库。在上一篇文章中,我似乎记得一些特定于AWS的库不允许您在进行身份验证时指定作用域。如果是这样,我会抛弃它们,转而使用基于标准的库。我通过
amazon cognito identity js
获得令牌,我如何在身份验证请求中指定范围?@LêQuangBảo将托管UI或授权端点用于OAuth2,并将Cognito用户池作为验证程序请求作用域。使用授权端点时,我遇到了一个
重定向\u不匹配
错误。这里是我的网址:@LêQuangBảo如屏幕截图所示,客户端ID应为“522j…”,而不是“JB6HKB09VV90B48BPE85P11T”。因此,重新定向uri:“”不匹配。请帮助检查您的url是否与应用程序客户端设置匹配。我使用的是自定义UI,而不是aws amplify的托管UI和验证api。返回的访问令牌没有openid作用域。它能修好吗?或者,当我们不使用托管UII时,我使用授权端点得到了一个
重定向\u不匹配
错误。这里是我的网址:@LêQuangBảo如屏幕截图所示,客户端ID应为“522j…”,而不是“JB6HKB09VV90B48BPE85P11T”。因此,重新定向uri:“”不匹配。请帮助检查您的url是否与应用程序客户端设置匹配。我使用的是自定义UI,而不是aws amplify的托管UI和验证api。返回访问