【问题标题】:"Access token does not contain openid scope" in AWS CognitoAWS Cognito 中的“访问令牌不包含 openid 范围”
【发布时间】:2023-03-23 16:41:01
【问题描述】:

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

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

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

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

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

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

所以我正在向“https://mydomain.auth.eu-central-1.amazoncognito.com/oauth2/userInfo”发出 GET 请求 使用他们要求的授权标头,但我不断收到此响应:

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

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

提前致谢

【问题讨论】:

    标签: amazon-web-services amazon-cognito


    【解决方案1】:

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

    【讨论】:

    • 我已经勾选了所有这些但有这个问题..
    【解决方案2】:

    Erez,您使用的是自定义 UI 吗? 因为自定义 UI 使用与 OAuth2 完全分离的流程(USER_SRP_AUTH、USER_PASSWORD_AUTH)。随这些流发布的令牌不符合 OpenID Connect(基本上它们不包含 openid 范围),因此您不能使用它们来收集用户信息(因为 userinfo 端点符合 OpenID Connect 并且需要使用符合以下条件的 jwts 来调用) OIDC 标准)。 我们也在为此苦苦挣扎,对不起。

    【讨论】:

    • 我们写信给 AWS 支持,他们给了我们一个脚本,该脚本基本上通过脚本执行 OAuth2 授权代码流。所以在我之前写的时候(4 月 18 日),这是一个已知问题,获得 OpenID 令牌的唯一解决方法是以“隐藏”样式执行授权代码流。对于我们的用例和需求,我们决定切换到另一个 IAM。
    • 对不起,我不能。这是通过脚本遵循授权代码流,解析各种响应返回的 HTML 的问题。对不起
    【解决方案3】:

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

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

    【讨论】:

    • 我今天通过 REST 调用玩它时拥有所有 3 个令牌并且遇到了同样的问题。读到这里,让我仔细检查了一下,我也犯了同样的错误:)
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      我仍然遇到同样的问题。我的问题依赖于在 Amplify 框架中以编程方式使用登录服务(不是通过联合登录托管 UI)。经过长时间的谷歌搜索,我发现这是因为“openid”不包括在令牌的范围内。仅包含“aws.cognito.signin.user.admin”。

      你可以在这里找到参考,线程仍然开放https://github.com/aws-amplify/amplify-js/issues/3732

      这个解决方案对我来说似乎很好How to verify JWT from AWS Cognito in the API backend?

      【讨论】:

        猜你喜欢
        • 2020-04-25
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 2020-10-27
        • 2023-04-03
        • 2021-12-21
        • 2019-02-25
        • 1970-01-01
        相关资源
        最近更新 更多