Day28 - 【概念篇】Keycloak使用基本概念 - 第二部分: Role

本系列文之後也会置於个人网站


在帐号系统下,除了帐号本身与帐号群组外,通常还存在一个非常重要的部分--角色(Role),更有基於角色的存取授权方式(RBAC)。

写到有点累了,没意外的话之後是会提到RBAC

帐号如果代表一个人,这个人可能有多个角色身份。可能是个老师、主任、校长;可能是爸妈、叔姨;可能是员工、部长、处长、老板,且可能有一群人拥有同一种角色。角色和帐号群组有点像,但在Keycloak是两个概念。除此之外,在Keycloak还分成两类型角色-- Realm RolesClient Roles

建立 Realm Roles

首先,你可以建立Realm共用的角色,像是员工、老板等等较爲通用的角色。

点选在 Realm 选单下的 Roles ,然後再点选 Add Role

然後设定 Role Nameemployee , 接着按下储存就大功告成。

建立 Client Roles

不同应用可能需要不同的角色。已常见的内容管理系统(文章管理系统)来说,可能有以下角色:

  1. 匿名未登入者
  2. 读者
  3. 作者
  4. 编辑
  5. 管理者

不同情况可能需要不同角色,以最近在社群媒体有点讨论度的喜剧表演来说,可能就分有 表演者写手 等几角色。或是在同一家公司内,不同专案内,可能一个人在一个专案内是专案经理,但在另一个专案是专案成员。

要建立 Client Roles 也很简单,先到 Client 相关设定页面,找到 Roles 页签,点选 Add Role

与建立 Realm Role 相同,先简单建立一个Reader就好。

设定帐号角色

要使帐号拥有某个角色,只需要到帐号设定相关页面,选择「Role Mappings」页签。

在 Realm Roles 旁边的 Available Roles 选取区块内选择 employee ,点选 Add selected 加入到 Assigned Roles。

要指定 Client Roles 也同样。在 Client Roles 旁边的 Available Roles 选取区块内选择 Reader ,点选 Add selected 加入到 Assigned Roles。

现在,在角色设定相关页面的「User in Role」页签页面,可以看到方才加入的帐号。

设定帐号群组角色

你同样可以在帐号群组页面做相似设定。当帐号加入特定帐号群组後就自动会拥有帐号群组设定的角色。现在可以一样将employeeReader指定给Group A

Bob 已经是 Group A 群组成员。回到Bob帐号相关设定页面,将相关的角色移除(选择相关角色後,点选「Remove selected」)。会发现生效的角色 (Effective Roles) 仍然存在指定给Group A的角色。


下一篇会来说一下JWT格式的Token,然後谈谈Open-Id。到时与OAuth相关弯概念议题也就全部结束。

会不会进到存取控制概念,还是直接进入实战篇...容我在犹豫一下wwww

角色属性(Role Attribute)

与帐号属性(User Attribute)和群组属性(Group Attribute)一样,角色同样可以设定角色属性(Role Attribute)。设定方法类似,但目前没有简单的方式可以使用,所以也就先在这里提提而已。

参考资料


<<:  D-01-总结 ? dotnetcore

>>:  虹语岚访仲夏夜-0(悲伤的blue)

Day 17-隔离框架 (isolation Framework) - NSubstitute 基本介绍-2 (核心技术-9)

NSubstitute 基本语法前言 今天的文章主要参考於 NSubstitute官方网站,正所谓工...

GitHub Commit signature verification - 确定每次变更来源是可以信任的

GnuPG (简称 GPG),允许作者对资料与通信进行加密与签章。你可以在本地端使用 GPG 对 C...

1.3 Design System - 包含哪些项目要做?

职场好榜样F大 F 对我来说是设计的前辈,在他入职後,我才有在设计上有比较大幅度的进步 不过在他身...

关闭核电厂的椅子

故事简述 核二厂2号机於2021/7/27清晨6时32分发生反应炉急停事件,初步调查为人为疏失 原能...

D13 第七周 (回忆篇)

这礼拜进度缓慢了下来,还在跟第六周的切版作业奋斗。到这边才慢慢找到自己切版比较顺的流程 RWD 一开...