【问题标题】:OAuth Cognito ID token unauthorizedOAuth Cognito ID 令牌未经授权
【发布时间】:2022-02-12 16:39:29
【问题描述】:

我有一个 cognito 用户池/应用程序客户端设置,其中包含 OAuth 流和标准范围(电子邮件、管理员等)和几个第 3 方提供商(google、azure 等)。我想在请求上下文中获取身份数据,这意味着我需要使用 id 令牌,但使用 id 令牌会得到来自 api 网关的未经授权的响应,而访问令牌按预期工作。我记得在某处读到自定义范围不允许 id 令牌身份验证,但我没有自定义范围设置。对这里发生的事情有任何见解吗?

【问题讨论】:

  • 您使用的是 AWS REST API Gateway 还是 HTTP API Gateway?对于 REST API Gateway,仅当您为端点指定了一个或多个 OAuth 范围时,访问令牌才有效。另一方面,id 令牌仅在未指定 OAuth 范围时才有效。
  • @KaustubhKhavnekar REST,这是有道理的。 HTTP 是较新的版本吗?另外,如果我必须使用范围,如何在请求上下文中获取身份信息?我想将我的端点 lambda 放入 VPC,但希望避免进行所有必要的设置以从 vpc 后面获取对 cognito 的访问调用
  • HTTP 稍后发布,但我不会将其描述为“较新”版本,它们适用于不同的用例。 Here is a detailed comparison 介于两者之间。范围仅存在于访问令牌中,而不存在于 id 令牌中。您必须使用访问令牌访问 API,然后使用 USERINFO endpoint 获取用户详细信息。
  • @KaustubhKhavnekar 请在您有时间的时候将其发布为答案,以便我接受

标签: amazon-web-services aws-api-gateway amazon-cognito


【解决方案1】:

来自Integrate a REST API with an Amazon Cognito user pool

使用 COGNITO_USER_POOLS 授权方,如果 OAuth Scopes 选项 未指定,API Gateway 将提供的令牌视为身份 令牌并根据用户的身份验证声称的身份 水池。否则,API Gateway 将提供的令牌视为访问 令牌并验证令牌中声明的访问范围 针对方法上声明的授权范围。

OAuth 范围仅存在于访问令牌中。基于访问令牌有效这一事实,您已经为端点指定了一个或多个 OAuth 范围。

如果您有一个有效的访问令牌,您可以使用它的值通过USERINFO endpoint 获取有关经过身份验证的用户的信息。

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 2023-03-03
    • 2017-10-16
    • 1970-01-01
    • 2023-03-31
    • 2018-06-05
    • 2013-07-05
    • 2019-09-09
    • 1970-01-01
    相关资源
    最近更新 更多