【问题标题】:AWS Cognito: Add custom claim/attribute to JWT access tokenAWS Cognito:将自定义声明/属性添加到 JWT 访问令牌
【发布时间】:2019-11-20 01:39:13
【问题描述】:

我的应用为每个新注册用户创建了一个自定义属性“userType”。现在,我希望在用户登录或刷新令牌时将此“userType”声明/属性添加到 JWT 访问令牌中。

是否可以选择告诉 cognito 将我的自定义声明/属性添加到 JWT 访问令牌? (没有预令牌生成 Lambda)

【问题讨论】:

  • 您可以设置应用客户端可以读取哪些属性。如果您将其设置为可读,它将被添加到 JWT。
  • @giaco 我需要 JWT 访问令牌中的自定义属性,而不是 JWT ID 令牌中的自定义属性。
  • 抱歉误读问题。请问为什么需要在访问令牌中使用这些数据?
  • 搞清楚了吗?

标签: aws-lambda amazon-cognito


【解决方案1】:

自定义属性在 Cognito 访问令牌中不可用。目前也无法使用Pre Token Generation Lambda Trigger 在访问令牌中注入额外的声明。 PreToken Generation Lambda Trigger 只允许您自定义身份令牌(Id Token)声明。

【讨论】:

【解决方案2】:

您可以使用 ID 令牌来获取具有自定义属性的令牌。

访问令牌并非旨在携带有关用户的信息。它们只是允许访问某些已定义的服务器资源。

您可以在客户端的不同组件周围传递 ID Token,这些组件可以使用 ID Token 来确认用户已通过身份验证并检索有关他们的信息。

如何使用 amazon cognito 身份 js 检索 Id 令牌

cognitoUser.authenticateUser(authenticationDetails,{
  onSuccess: function(result) {
    var accessToken = result.getIdToken().getJwtToken();
    console.log('accessToken is: ' + accessToken);
  },
  onFailure: function(err) {
    alert(err.message || JSON.stringify(err));
  },
});

【讨论】:

    【解决方案3】:

    当我想创建多个微服务时,我遇到了同样的问题。我无法自定义访问令牌,而只能自定义身份令牌。但是,我在需要访问令牌的机器对机器中使用客户端凭据。所以,我绝对不能自定义我的令牌。最后,我决定在事件标题中添加此类信息(如用户类型)。与自定义令牌相比,这不是一种非常安全的方法,但目前没有其他简单的方法可以做到这一点。否则,我必须在 Cognito 中重写授权人。就像重写一个自定义的授权者一样,非常痛苦。

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 2020-10-27
      • 2019-06-24
      • 2020-02-06
      • 2021-04-25
      • 2020-01-15
      • 2021-12-01
      • 2019-03-24
      • 1970-01-01
      相关资源
      最近更新 更多