【问题标题】:Cognito Access Token "cognito:groups" missingCognito 访问令牌“cognito:groups”丢失
【发布时间】:2021-06-07 20:03:08
【问题描述】:

我想使用 Cognito 验证我的 API 网关请求。

为此,我创建了自定义范围。 API Gateway 检查这些范围并将这些请求代理到我的 Elastic Beanstalk API。这很好用。

但我的授权的另一部分是组。根据分配的组,某些操作限制了访问。我需要使用组,因为我希望能够在用户生命周期中添加或删除这些组。该组将在我的 Elastic Beanstalk API 中进行检查。


问题
documentation 声明访问令牌包含 cognito:groups 声明。但是像下图这样的设置不包括我的令牌中的这个声明。

以下解码的 jwt 将在通过托管 UI 登录后生成。如您所见,索赔丢失了。 ID 令牌(具有openid 范围)将包括该组。我也确信我之前已经使用包含该组的 Amplify JS-SDK 测试了 Cognito。但是我无法包含我的自定义范围。

{
  "sub": "xxxxxxxxxxxxxxxxxxxxxx",
  "token_use": "access",
  "scope": "api.example.com/item.read api.example.com/item.write",
  "auth_time": 1615325374,
  "iss": "https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_xxxxxxx",
  "exp": 1615328974,
  "iat": 1615325374,
  "version": 2,
  "jti": "f37219a5-c8b0-411b-bdb3-ab7d9201b491",
  "client_id": "xxxxxxxxxxxxxxx",
  "username": "xxxxxxxxxxxxxxxxxxxxxxxxxx"
}

我是否错过了限制或配置问题?为什么我的访问令牌中缺少该组? 感谢您的帮助!

【问题讨论】:

  • 我还没有测试过,但我认为您缺少aws.cognito.signin.user.admin 范围。它需要处理用户帐户的数据。而且由于组是用户帐户的一部分,我认为它应该在您添加后工作。
  • 不幸的是,这并没有改变任何东西。此外,如果我只选择 aws.cognito.signin.user.admin 我看不到群组声明。使用 Cognito 托管 UI 有问题吗?我宁愿在 Javascript 中使用 Amplify SDK。但是我无法包含自定义范围。
  • 我刚刚注意到您没有 openid 范围。我会试一试。
  • 是的,但这会将访问令牌转换为身份令牌。这不是我想要的
  • 总是有 3 个令牌。访问、ID 和刷新。

标签: amazon-web-services oauth-2.0 amazon-cognito


【解决方案1】:

我遇到了同样的问题。 cognito:groups 值在我添加 openid 范围后出现:

并且仍然提供访问令牌,就像之前的 cmets 一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 2020-10-27
    • 2021-12-21
    • 2020-09-28
    • 2023-04-03
    • 2016-06-10
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多