上一篇文章简单介绍了Keycloak,反响不错。看来你们都对这个东西感兴趣,今天就来进一步的体验Keycloak,让咱们对它有一个直观的认识,而后逐步深刻,把它的设计理念和概念各个击破。docker
由于事先已经知道Keycloak提供了Spring Security的适配器。先独立把Keycloak的核心概念弄清楚,而后再去研究它如何结合Spring Security的。安全
❝app
本文的Keycloak版本为
14.0.0
。框架
我向来不喜欢在安装上浪费时间,研究阶段能用Docker来安装是最省心的。ide
docker run -d -p 8011:8080 --name keycloak-server -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak
执行上述命令安装Keycloak,成功后打开http://localhost:8011/auth/admin
输入帐号admin
和密码admin
,就进入了管理控制台。若是你感受英文不爽能够根据下图改为中文:学习
改完以后你随便点点栏目了解一下,想象一下它们各自的功能和做用,这时候你要放轻松点不用想的太深就是了解一下全貌。3d
若是你接触过知名安全框架Shiro相信对这个概念不会陌生。realm
是管理用户和对应应用的空间,有点租户的味道,可让不一样realm
之间保持逻辑隔离的能力。code
默认状况下,Keycloack提供了一个叫Master
的realm
,这个Master
不承担具体应用和用户的管理,它只用来管理其它realm
的生命周期。server
登入Master
的realm
建立一个自定义域felord.cn
。
User
是可以登陆到应用系统的实体,其实能够理解为帐户。他们能够拥有与本身相关的属性,例如电子邮件、用户名、地址、电话号码和生日。能够为他们分配组成员身份并为其分配特定的角色。Keycloak
中的User
都有他们从属的realm
。接下来在我上面的自定义域felord.cn
中新建一个用户,步骤为:
菜单栏找到管理->用户,而后打开添加用户。
键入惟一的必填项用户名(username)
。
开启(ON
)邮件认证(Email Verified(,而后保存。
点击凭据(Credentials)选项卡为新用户设置临时密码。此密码是临时的,用户将须要在第一次登陆时更改它。若是您更喜欢建立永久密码,请将临时开关切换到关闭并单击设置密码。
而后注销当前用户admin
并到http://localhost:8011/auth/realms/felord.cn/account
以刚建立的用户felord
的身份登陆到felord.cn
域。
❝
有没有发现登陆连接的特色?
到这里一个建立realm
和帐户的流程就熟悉完了,不过我相信大多数同窗看到这里仍是懵逼的。怎么就手动了呢?不要急后面会结合代码来实现上述的流程以及更加符合应用场景的流程。
接下来是咱们在使用Keycloak时须要掌握的一些概念,上面已经提到了realm
和user
,这里就再也不赘述了
识别和验证用户的过程。证实“你说的这个你就是你”。
授予用户访问权限的过程。代表“你能够干什么、不能够干什么”。
证实用户身份的凭证。多是密码、一次性密码、数字证书以及指纹。
角色是RBAC的重要概念,用于代表用户的身份类型。
用户角色映射关系。一般一个用户可能有多个角色,一个角色也能够对应不一样的人。
复合角色,听起来很玄乎,其实就是角色的从属关系或者说继承关系。B
角色从属于A
角色,那么你拥有了A
角色就必定拥有B
角色的权限。
用户组,你能够将一系列的角色赋予定义好的用户组,一旦某用户属于该用户组,那么该用户将得到对应组的全部角色权限。
客户端。一般指一些须要向Keycloack请求以认证一个用户的应用或者服务,甚至能够说寻求Keycloack保护并在Keycloack上注册的请求实体都是客户端。
Keycloack为了支持多语言和跨平台而设计的适配器,好比适配Java的、适配Python的。有些是内置的实现,有些须要咱们按照Keycloack的抽象定义来实现。后续咱们主要和Spring Boot Adapter打交道。
用来认证用户的服务,简称IDP
。Keycloack自己就是一个IDP
。这个相似Spring Security中的AuthenticationProvider
接口。
❝
还有一些概念等遇到了会再补充,有点多,先消化消化。
今天这一篇主要对Keycloack进行一个初步的体验,搭建了一个开发环境供后续的学习,同时对Keycloack的一些核心概念进行了汇总。不过因为篇幅限制没有彻底的去梳理一些概念,不过学习都是按部就班的,急不得。自定义realm
和用户都建好了,下一篇我将尝试用Keycloack来保护Spring Boot应用。