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

时间:2018-09-20 12:55:46

标签: amazon-web-services amazon-cognito

我正在前端应用程序上运行有效的AWS Cognito服务,该服务可以成功完成基本工作-登录,注销,注册等。

现在,我正在尝试通过后端API获取用户属性,例如:

1)用户在应用程序中登录并获得JWT。

2)JWT正在发送到后端服务器。

3)服务器必须使用访问令牌提取用户的电子邮件

我发现最需要的是this Cognito服务。

因此,我正在向“ https://mydomain.auth.eu-central-1.amazoncognito.com/oauth2/userInfo”发出GET请求 按照他们的要求使用“授权标头”,但我一直收到以下答复:

  

{       “错误”:“ invalid_token”,       “ error_description”:“访问令牌不包含openid范围”   }

我已经尝试搜索此错误,但找不到有关该错误的任何解释。

多谢

4 个答案:

答案 0 :(得分:2)

我遇到了这个确切的问题,这是我的错。我正在发送令牌的id_token而不是access_token属性。
我使用PHP编程,因此我以标头"Authorization: Bearer ".$token->id_token而不是"Authorization: Bearer ".$token->access_token的形式发送。现在可以了。

希望它对您或某人有帮助。

答案 1 :(得分:0)

如果我的理解正确,则您已成功将#id_token从Cognito发送到前端(步骤1-3)。通过在Cognito Pool App客户端设置中选择以下选项,可以在#id_token上启用范围:

enter image description here

答案 2 :(得分:0)

Erez,您使用的是自定义用户界面吗? 因为自定义UI使用与OAuth2(USER_SRP_AUTH,USER_PASSWORD_AUTH)完全分开的流。与这些流一起释放的令牌不符合OpenID Connect(基本上不包含openid范围),因此您不能使用它们来收集用户信息(因为userinfo终结点符合OpenID Connect,并且需要与jwts兼容来调用OIDC标准)。 很抱歉,我们也在为此而苦苦挣扎。

答案 3 :(得分:0)

我遇到了类似的问题,我花了几个小时才找到解决方案。您从前端应用程序中的 cognito 收到的访问令牌,您需要将其发送到后端,然后对其进行解码和验证。这是来自 aws 的一个很好的文档:https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html