Keycloak
安装&初始化
下载
笔者下载的是“Standalone server distribution” 。
安装&启动
安装Keycloak非常简单,步骤如下: 解压下载下来的安装包
将目录切换到 KEYCLOAK_PATH/bin,其中KEYCLOAK_PATH是您Keycloak的根目录
执行 ./standalone.sh,即可启动Keycloak,如需后台运行,则执行 ./standalone.sh &。
初始化
该界面让我们创建一个初始化的admin账户。那么我们不妨填写一下,为了测试方便,我们将账号/密码分别设为 admin/admin,然后点击create按钮,将会跳转到如下界面:
由图可知,管理员账户已创建成功,Keycloak初始化也已完成。
管理控制台
点击上图的 Administration Console按钮,将会弹出登录页面:
输入我们之前初始化设置的账号、密码,并点击 Login in按钮,即可登录管理控制台,如下图所示:
由图可知,管理控制台的菜单挺多的,功能也比较丰富,不禁让人有点恐惧——这么多菜单,这么多子功能项,得花多少时间研究啊!没有关系,可以随着笔者的节奏,逐步深入。
与Spring Boot整合
纳尼?上一篇才讲了个初始化,这一篇就与Spring Boot整合啦?这是什么节奏?按照套路,不应该先介绍下这个术语,那个概念吗?
没有关系,Keycloak非常简单,我们可以在实战中了解各种概念。
整合Keycloak非常简单,因为Keycloak为我们提供了各种语言、各种框架的 Adapter,基于OpenID/SAML协议的Adapter,大概二十多个,有兴趣的可前往: http://www.keycloak.org/docs/latest/securing_apps/index.html#openid-connect-3阅读。后面等笔者有空了,也会将这些文章翻译出来,敬请期待。
微服务
假设有一个Spring Boot微服务: 名为: ms-content-sample
它有个路径 http://localhost:8081/articles,只有 user-role角色的用户才能访问, test-role角色的用户不允许访问。
下面我们来为该服务整合Keycloak,并逐步实现基于Keycloak的单点认证及授权。
准备工作
创建Realm 首先,我们需要创建一个Realm。Realm是一个隔离的概念,Realm A中的用户与Realm B中的用户完全隔离。当然,也可以不创建Realm,直接用 Master这个Realm,不过一般来说,为了资源的隔离,以及更好的安全性不太建议与管理员共用Realm。如下图所示:
输入Realm名称,这里,如图所示,我们创建了一个名为 realm的Realm。
创建Client 创建完realm后,我们来为 ms-content-sample创建 Client,点击下图的Create按钮。
填写Client信息,这边我们创建一个名为 ms-content-sample的Client。
设置Client 下面我们来配置Client,点击途中的Edit按钮:
设置Client
如图,我们配置了Access Type为public,当然还有其他选项,例如bearer-only,我们先选public,bearer-only我们后面会细讲;配置了Valid Redirect URLS,这是认证成功后跳转到的页面地址,其中我们使用了通配符;配置了Base URL,一般配置成微服务首页即可。
创建角色
比较简单,如图,我们创建了两个角色, user-role以及 test-role。
创建用户并分配角色 创建用户