FusionAuth Lambdas

FusionAuth Lambdas

我想使用 FusionAuth 的 lambda 功能根据用户登录的应用程序填充 JWT,因为同一用户可以登录不同的应用程序并在其中拥有多个角色或组。我不希望 JWT 填充每个角色,作为用户可以在应用程序中执行的角色操作(遵循 NIST RBAC 模型,它将是 'read:attentions' 或 'delete:tests' 之类的权限)因为它可能有几十个(syze 原因),而不是我希望 JWT 填充用户拥有该特定应用程序的组。我尝试用空数组分配角色 属性 但没有成功。我知道默认情况下该工具不允许您更改角色 属性,但是有办法删除它吗?

function populate(jwt, user, registration) {
    jwt.group = registration.data.group;
    jwt.roles = [];
}

不管怎样,令牌仍然具有这些角色,我该如何删除它们?

{
  "aud": "xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx",
  "exp": xxxxxxx,
  "iat": xxxxxxx,
  "iss": "acme.com",
  "sub": "xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx",
  "authenticationType": "PASSWORD",
  "email": "xxxxxxx@mail.com",
  "email_verified": true,
  "applicationId": "xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx",
  "roles": [
    "read:attentions",
    "write:attentions"
  ],
  "group": "financer"
}

roles 声明由 FusionAuth 保留,无法由 Lambda 修改。有一个 open feature 计划在即将发布的版本中完成以放宽此限制。

提供此功能后,您将可以选择删除或修改 roles 声明。

JWT Populate Lambda 文档中概述了当前保留的声明。