【问题标题】:Can I use Cognito Access Token to generate an ID Token?我可以使用 Cognito 访问令牌生成 ID 令牌吗?
【发布时间】:2021-06-19 15:54:04
【问题描述】:

是否可以使用 Cognito 访问令牌生成 ID 令牌?我在网上找不到任何关于此的文档。

我正在尝试使用自定义声明获取 ID 令牌,但现有解决方案不适用于我的情况 (details here)。作为一种解决方法,我正在考虑在用户登录后直接使用访问令牌手动向 Cognito 询问 ID 令牌。

我尝试了什么

  • 调用 Cognito 的 /oauth2/userinfo 端点仅返回基本声明,而不是我通过 pre token generation lambda 触发器添加的自定义声明。
  • 向访问令牌添加自定义声明/属性。 Seems like that's not supported.
  • 我没有探索过的想法:使用 Amplify 并通过某种方式获取 ID 令牌?

【问题讨论】:

    标签: amazon-web-services amazon-cognito


    【解决方案1】:

    您可以使用访问令牌调用 Cognito API 上的 getUser 方法: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html 这将提供用户属性: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html

    这提供了与您在 ID 令牌上获得的数据相同的数据。

    【讨论】:

    • 感谢参考!似乎这是 Cognito SDK(Amplify JS 就是其中之一) - 这就是您所指的吗?
    • Cognito SDK 是一个 javascript 库,您可以在一行中导入它。 Amplify 是一整套可用于移动开发的工具和服务。
    • 使用 Cognito SDK 是显而易见的选择,它是访问 Cognito API 的最简单方法,但不是必需的。
    【解决方案2】:

    没有。

    如果您需要 ID 令牌中的属性,不包括开放的 id 声明,例如 exp、iss、aud,那么也许是可能的。

    但如果您需要 ID 令牌(符合 OIDC 标准声明),则它仅由 cognito 在特定 cognito 事件时发布。

    ID 令牌的目的是识别用户。 ID 令牌通常沿着请求的 Authorization 标头发送到后端服务器,以作为安全措施进行验证。知道了 ID 令牌的用途,也就不奇怪为什么只有特定的方式获取 ID 令牌了。

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2020-10-27
      • 2019-11-11
      • 2018-08-10
      • 1970-01-01
      相关资源
      最近更新 更多