一、keycloak 是什么
keycloak 是一个开源的、面向现代应用和服务的 IAM(身份认证和访问控制)解决方案。它可以很容易地保护应用程序和服务,而几乎没有代码。
主要功能:
- SSO
单点登录(Single-Sign On),支持 OpenID Connect、OAuth 2.0、SAML 2.0 标准协议。
- Identity Brokering and Social Login
通过配置,可实现对不同身份认证服务的集成,通过这些身份认证服务登录应用。如 GitHub、Google 等,开源社区也有人提供了微信集成方案。
- User Federation
用户联合,提供了对 LDAP、Active Directory、Kerberos 的集成方案。
- Client Adapters
不同平台多种语言的支持,Java、Python、Go、Node.js、Spring、Quarkus 等。
- 后台管理
提供了多种语言的后台管理界面,如果想偷懒的话改改图标定制个主题就能拿来用。同时还有 CLI 、SDK 和 RESTful API。
- 授权服务
提供基于 RBAC、ABAC、UBAC 等多种策略的授权功能。
- 其他常用功能
密码策略、暴力检测、MFA、日志审计。
二、启动keycloak
开始之前,确保已经安装Docker。
从终端开启 keycloak,命令如下:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.0 start-dev
以上命令将启动 Keycloak ,并暴露在本地端口8080上。 该命令还将创建一个带有初始用户名为 admin 和密码为 admin 的用户。
三、应用示例
(1)登录管理控制台
去Keycloak管理控制台并使用之前创建的用户名和密码登录。登录后界面如下:
图中 1 为地址,2 为 keycloak 管理控制台入口。
(2)创建一个realm
在 keycloak 中,一个 realm 相当于一个租户。它允许创建独立的应用程序和用户组。master 是keycloak 中默认的 realm,master 是专用于管理 keycloak的,不建议用于自己的应用程序。要应用于自己的应用程序时,一般建立一个指定名称的 realm。创建 realm 的步骤如下:
1、打开Keycloak管理控制台。
2、将鼠标移到左上角标有 Master 的下拉框处,在下拉处可以看到 Add realm 按钮,点击该按钮,可以看到如下界面:
3、在右侧 Add realm 界面的 Name 处填写自己相应建立的 realm 的名称,例如: myrealm。
4、点击 Create 按钮创建。
(3)创建一个user
在新创建的 realm 中没有用户,需要先创建一个,创建步骤如下:
1、打开Keycloak管理控制台。
2、点击左侧菜单中的 Users,在弹出的右侧面板中点击 Add user,如下图:
3、在 Add user 面板中,填写类似如下的示例信息:
Username:myuser
First Name:my
Last Name:user
4、点击 Save 按钮。
5、保存成功后,设置初始密码,操作如下:
1、在出现界面点击 Credentials,出现如下界面。
2、设置密码,设置完后,Temporary 处点击为 OFF。
3、点击 Set Password 按钮完成密码设置。
(4)配置第一个示例应用程序
现在尝试配置第一个应用程序。 第一步是用你的 Keycloak 实例注册一个应用程序,如下:
1、打开Keycloak管理控制台。
2、点击左侧的 Clients,在右侧的弹出界面点击 Create 按钮,得到 Add Client 界面。
3、在 Add Client 界面填写相关信息,示例如下:
Client ID:myclient
Client Protocol: openid-connect
Root URL:Test application - Keycloak
4、点击 Save 按钮。
(5)登录示例应用程序
1、打开 Test application - Keycloak 并点击 Save 以实验默认配置。
2、点击 登录 使用之前启动的 Keycloak 服务器对此应用程序进行身份验证。
如下图:
a、点击 登录。
b、输入用户名、命名,点击登录。
c、登录界面查看,可以看到类似 Hello, my user 字样。