0

我想使用 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"
}
4

1 回答 1

0

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

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

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

于 2020-01-21T15:26:03.033 回答