【问题标题】:How are Keycloak roles managed?Keycloak 角色是如何管理的?
【发布时间】:2018-05-29 23:23:54
【问题描述】:

Keycloak 是一个很棒的工具,但它缺乏适当的文档。

所以我们有 Realm.roles、Client.roles 和 User.roles

当使用特定客户端访问应用程序时,这 3 个如何协同工作?

此致,

【问题讨论】:

    标签: keycloak


    【解决方案1】:

    在 KeyCloak 中,我们有这 3 个角色:

    1. 领域 角色
    2. 客户 角色
    3. 复合 角色

    KeyCloak 中没有用户角色。您很可能会将其与用户角色映射混淆,后者基本上是将角色(领域、客户端或组合)映射到特定用户

    为了了解这些角色的实际工作原理,让我们先来看看我创建的一个简单的 Realm 模型。如下图所示,每个 Realm 都有一个或多个 Clients。每个Client都可以有多个User附加到它上面。

    现在应该很容易得出角色映射的工作原理。

    领域角色:它是一个全局角色,属于该特定领域。您可以从任何客户端访问它并映射到任何用户。 Ex 角色:“全球管理员,管理员”

    客户角色:这是一个仅属于特定客户的角色。您无法从其他客户端访问该角色。您只能将其映射到该客户端的用户。 前角色:“员工、客户”

    复合角色:它是一个具有一个或多个角色(领域或客户端)与之关联的角色。

    【讨论】:

    • 谢谢,不是我更糊涂了……图中的瞄准镜是怎么玩的?客户角色是增加领域角色还是限制他们?如果我有一个 webapp 客户端和一个移动客户端,它们共享相同的客户端角色怎么办?
    • 既然您已经知道,KeyCloak 社区并没有那么大,因此,据我所知,没有针对这种情况的最佳实践。您可以创建一个全局(领域级别)角色,并从两个客户端轻松访问它,或者您可以在每个客户端中创建两个相同的角色。根据您的项目规模,选择最适合您的项目。
    • 谢谢,我明白了 - 再一次,keycloak 文档在该领域真的很薄弱。我终于明白了客户端如何根据范围“过滤”用户角色。根据您的评论,我还认为 roleId 可以跨多个客户端“复制”。
    • @Dino 我有一个问题,在我基于 java 的项目中,我希望允许用户根据他/她的角色查看数据库数据。当然,在spring security的帮助下,我可以根据用户的角色检查角色,但是可以在数据库级别处理事情吗?
    • 嗨@Gurinder,你有没有找到任何配置或技术来在数据库级别应用keycloak角色?
    猜你喜欢
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多