当前位置: 首页 > 知识库问答 >
问题:

Quarkus:如何管理复杂的角色关系?

水焱
2023-03-14

我们的团队目前正在开发我们的第一个Quarkus应用程序,大多数开发人员主要使用Spring生态系统。我们面临以下授权相关问题:

我们的用户通过openID和JWT使用公司提供的SSO解决方案进行身份验证,其中已经提供了一些默认角色。我们有一些特殊的领域特定规则,比如如果用户至少有一个角色[A,B,C],他就会得到角色Z(原则上类似于复合角色)。角色“z”不是来自JWT标记。然后,资源endpoint中的授权应该使用@rolesalloved(“a”)@rolesalloved(“z”)

你将如何在Quarkus实现这一点?

共有1个答案

邵刚洁
2023-03-14

您可以实现SecurityIdentityAugmentor来修改SecurityIdentity。一个将实现“如果标识至少有一个角色[A,B,C],那么它也有角色Z”的规则如下所示:

@Singleton
public class MyRolesAugmentor implements SecurityIdentityAugmentor {
    @Override
    public int priority() {
        return 0;
    }

    @Override
    public Uni<SecurityIdentity> augment(SecurityIdentity identity, AuthenticationRequestContext context) {
        return Uni.createFrom().item(() -> {
            QuarkusSecurityIdentity.Builder builder = QuarkusSecurityIdentity.builder(identity);
            if (identity.hasRole("A") || identity.hasRole("B") || identity.hasRole("C")) {
                builder.addRole("Z");
            }
            return builder.build();
        });
    }
}
 类似资料:
  • 一、简介 角色定位了拥有此角色的所有管理员权限,不同的角色可以按需分配不同的权限配置。 定义了角色那么就可以应用到所有对应管理员上。 二、功能演示 V9角色管理可以做那些?: 可对不同站点,进行按功能菜单 和 栏目权限 二种分配方组合配置。 1、 添加角色 2、 角色管理 角色管理涉及 权限设置,栏目设置 及成员管理。具体如下: A.权限设置 角色可对不同的站点进行权限设置。如下图: B.栏目权限

  • 平台默认初如化了两个角色的权限。一个是超管另一个是项目研发 剩下的您可以根据需求配置相关角色的权限。 增加角色 在角色管理菜单列表页点击“添加角色”按钮 在弹出的对话框中输入以下三个信息 名称 描述 级别 这里需要特别注意“角色级别”的值越小,可能的权限会越大,目前只用在了几个地方。 角色分配权限 添加完角色之后,我们得给角色加上相应的权限。 在角色列表找到需要调整的角色,并点击“权限按钮”弹出如

  • 角色管理 创建角色        进入角色管理界面,点击添加角色,打开添加角色面板,输入角色名称,选择对应的权限,点击确定,完成角色创建。 编辑角色       点击编辑角色按钮,打开编辑角色面板,修改需要变更的内容。点击确定保存结果。 删除角色       点击删除按钮,弹出删除确认框,点击确定,删除角色成功。

  • 角色管理器用于管理Casbin中的RBAC角色层次结构(用户角色映射)。 角色管理器可以从Casbin策略规则或外部源(如LDAP、Okta、Auth0、Azure AD等) 检索角色数据。 我们支持角色管理器的不同实现。 为了保持代码轻量级,我们没有把角色管理器代码放在主库中(默认的角色管理器除外)。 下面提供了Casbin角色管理器的完整列表。 欢迎任何第三方对角色管理器进行新的贡献,如果有请

  • 角色是分配给用户的权限集合。默认情况下,Navicat Monitor 包含三个预定义的角色供你分配给不同用户以限制其访问权限。它还允许你创建具自定义权限设置的新角色。苃要配置角色及其权限,请前往“配置”->“角色和权限”。 每个预定义的角色都有不同的权限: 角色 权限 管理员 可以完全控制访问所有页面。此角色的权限是不可编辑的。 DBA 可以访问所有页面,但以下功能“除外”: - 激活令牌密钥,

  • 我目前试图设置一个管理员角色,以便访问一个简单的管理页面,使用以下留档通过提供:连接角色 我已经有一段时间不停地用我的头来撞击它,但我仍然不知道如何设置角色,例如,现在我正在从数据库中提取一个管理值,并暂时将其存储在一个全局变量中,但我不知道如何将其用于连接角色,比如只允许特定用户访问我的管理页面。 如果我的文档没有帮助我确保仅当用户是管理员时才能访问网页,那么有人可以澄清或展示如何执行此操作的示