我正在前端应用程序上运行有效的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范围” }
我已经尝试搜索此错误,但找不到有关该错误的任何解释。
多谢
答案 0 :(得分:2)
我遇到了这个确切的问题,这是我的错。我正在发送令牌的id_token
而不是access_token
属性。
我使用PHP编程,因此我以标头"Authorization: Bearer ".$token->id_token
而不是"Authorization: Bearer ".$token->access_token
的形式发送。现在可以了。
希望它对您或某人有帮助。
答案 1 :(得分:0)
答案 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