前几篇我和大家一起对Keycloak进行了粗略的了解。随着逐步的了解,我发现进入了一个误区,原本以为Spring Security整合Keycloak的重心在于Spring Security这一方面,事实上,我发现Keycloak关于Spring Security的Adapter的几个过滤器并没有可操作的空间,或许需要等弄明白了Keycloak本身之后才能有突破。所以今天我要弄明白的是Keycloak中的Realm。
Realm
Realm翻译成中文为领域。用来逻辑隔离一些特定空间,有点多租户的感觉,不同的Realm之间互相隔离,有各自的特色配置,互不影响。
什么时候用到Realm
当特定数量用户之间需要隔离的时候、一系列服务需要统一进行资源管理的时候就用到了Realm。可能我描述的不够全面,至少目前我能感觉到的就是这样。
![](https://img-blog.csdnimg.cn/img_convert/8e912d8c9
f03ee2b77754411f08598e9.png)realm包含的核心概念
比如我们需要开发一个应用,应用部署域名为felord.cn
。我们可以这么定义一个名称为felord.cn
的Realm,来管理该应用的角色、资源、和客户端,客户端开发可以专注于业务。整个Keycloak就像一个开放平台一样,集中式管理Realm的生命周期,这些Realm之间可以在OIDC协议下互联互通。
Master Realm
如果你看过之前我关于Keycloak的文章,可能会记得第一次启动Keycloak时会接触一个叫Master
的Realm。这个是Keycloak内建的Realm,它的作用有点类似Linux中的root
用户,主要是管理其它的Realm,Master Realm中的管理员账户有权查看和管理在Keycloak服务器实例上创建的任何其它Realm。
而且你会发现Master Realm创建的领域实际上是Master Realm的一个客户端,甚至它自己都是自己的客户端,而且名称遵循<realm name>-realm
。
而且你会发现Master Realm中创建的用户可以赋予其独有的两种角色:
-
admin 超级管理员,拥有管理Keycloak服务器上任何realm的完全访问权限。
-
create realm 拥有该角色就可以创建realm并获得该realm的完全管理权。
❝
建议Master Realm用来管理其它Realm而不参与具体的业务。
其它Realm
其它Realm是指用Master创建的Realm。创建其它Realm非常简单,通过Master Realm的管理员即可创建。创建成功会有一些选项可供配置,但是一般情况下使用默认配置即可。
设置Realm管理账户
为前面我初始化的Realmfelord.cn
创建独立的管理员账户有两种方式。
使用Master用户管理
我们在Master Realm中建立一个用户,并在其角色映射中剥夺admin
和create-realm
角色,同时在Client Roles中选中felord.cn-realm
把该客户端的所有角色都赋予建立的用户。例如:
这个用户属于Master的用户,但是管理着felord.cn
Realm。你可以通过下面的格式的链接进行控制台管理操作:
http:///auth/admin/master/console/#/realms/{realm-name}
使用领域客户端用户管理
另一种方法是在felord.cn
领域下建立一个用户,把其客户端realm-management
的所有客户端角色赋予给该用户。这个用户属于felord.cn
,因此只能通过以下链接登录管理控制台管理该领域:
http:///auth/admin/{realm-name}/console
❝
一个用户只能从属于一个Realm。
扩展
Keycloak Admin Client是通过API操作管理Realm的一个客户端工具,我在上一篇已经介绍过了。结合本篇的一些概念可能你会更加深刻的理解如果操作管理Realm。
往期推荐
机械妖姬上门要源码后续结果来了!
重磅消息:Spring 6 和Spring Boot 3
短信验证码登录流程思路及详细步骤
反996,竟反掉了17%的薪水?!而隔壁的房贷还在涨,怎么就越反越糟糕了呢?
最后
小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你需要这些资料,⬅专栏获取
图片转存中…(img-G7e28BYg-1719521622354)]
[外链图片转存中…(img-1EyNqL0e-1719521622355)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你需要这些资料,⬅专栏获取