1、概览
本文将带你了解如何设置 Keycloak 服务器,以及如何使用 Spring Security OAuth2.0 将Spring Boot应用连接到 Keycloak 服务器。
2、Keycloak 是什么?
Keycloak是针对现代应用和服务的开源身份和访问管理解决方案。
Keycloak 提供了诸如单点登录(SSO)、身份代理和社交登录、用户联盟、客户端适配器、管理控制台和账户管理等功能。
本文使用 Keycloak 的管理控制台,使用 Spring Security OAuth2.0 设置和连接 Spring Boot。
3、设置 Keycloak 服务器
设置和配置 Keycloak 服务器。
3.1、下载和安装 Keycloak
有多种发行版可供选择,本文使 Keycloak-22.0.3 独立服务器发行版。点击这里从官方下载。
下载完后,解压缩并从终端启动 Keycloak:
unzip keycloak-22.0.3.zip
cd keycloak-22.0.3
bin/kc.sh start-dev
运行这些命令后,Keycloak 会启动服务。如果你看到一行类似于Keycloak 22.0.3 [...] started
的内容,就表示服务器启动成功。
打开浏览器,访问http://localhost:8080
,会被重定向到http://localhost:8080/auth
以创建管理员进行登录:
创建一个名为initial1
的初始管理员用户,密码为zaq1!QAZ
。点击 “Create”后,可以看到 “User Created” 的提示信息。
现在进入管理控制台。在登录页面,输入initial
管理员用户凭证:
3.2、创建 Realm
登录成功后,进入控制台,默认为Master
Realm。
导航到左上角,找到 “Create realm” 按钮:
点击它,添加一个名为SpringBootKeycloak
的新 Realm:
单击 “Create” 按钮,创建一个新的 Realm。会被重定向到该 Realm。接下来的所有操作都将在这个新的SpringBootKeycloak
Realm 中执行。
3.3、创建客户端
现在进入 “Clients” 页面。如下图所示,Keycloak 已经内置了客户端:
我们需要在应用中添加一个新客户端,点击 “Create”,将新客户端命名为login-app
:
在下一步的设置中,除了 “Valid Redirect URIs” 字段外,其他字段保留所有默认值。该字段包含将使用此客户端进行身份验证的应用 URL:
稍后,我们会创建一个运行于 8081 端口的 Spring Boot 应用,该应用将使用该客户端。因此,在上面使用了http://localhost:8081/
的重定向 URL。
3.4、创建角色和用户
Keycloak 使用基于角色的访问