【发布时间】: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