KeyCloak快速入门
这篇文章的目的?
通过最后的案例可以使读者
- 了解并安装keycloak
- 熟悉provider作用以及通过provider完成自己的拓展功能
what is it?
Keycloak是一个开源身份和访问管理解决方案。它提供了集中化的用户身份验证、授权和访问控制,帮助开发人员轻松地添加安全性到他们的应用程序中。Keycloak支持各种标准和协议,如OAuth
2.0、OpenID Connect和SAML,可以用于保护Web应用程序、移动应用程序和后端服务。它还提供了用户管理、SSO(单点登录)、角色管理和审计等功能,使开发人员可以快速构建安全的应用程序和服务。
系统环境
- Maven版本: apache-mavne-3.6.0
- Java版本: 11.0.17 - oracle
下载地址:https://www.oracle.com/java/technologies/downloads/#java11
1.按照提示注册然后下载,这里推荐免安装版
2.下载成功之后解压到指定目录,之后将目录加入到环境变量中
JAVA_HOME = ${download}/
PATH = %JAVA_HOME%/bin
3.cmd验证版本
Step 1. windows平台启动17.0.0版本Keycloak
此篇主要以keycloak 17.0.0 Releases版本举例
step1.1 下载
- 进入链接 https://github.com/keycloak/keycloak/releases
- 找到并下载17.0.0版本
- 解压缩,目录大致如下
step1.2 启动
1.通过CMD进入${keycloak_home}/bin目录,使用指令:kc.bat start-dev
kc.bat start-dev
运行如下:
step1.3 测试keycloak
- 访问http://localhost:8080(第一次登陆需要设置管理员密码)
- 使用密码进入Admin console,默认存在一个Master的Realm
step 2 keycloak SMS短信验证码SPI的实现
step 2.1 SPI的jar包导入到keycloak中
gitee: https://gitee.com/xu_hai_00/keycloak_extensions_demo
下载:
keycloak-sms-authenticator.jar
keycloak-sms-requiredaction.jar
- 将下载的Jar或打出jar包并移动到${keycloak_home}/provider/…
- 执行 ${keycloak_home}/bin/kc.bat build ,结果如下
- 输入kc.bat show-config ,结果如下(说明自定义的SPI已被keycloak正确识别)
step 2.2 keycloak管理端配置自定义SPI
-
登陆Admin console
-
创建新的Realm,名称为demo
-
选择该列表下的Authentication并选择Brower这个工作流(workflow)
-
复制工作流Brower并起名为Cope of brower
-
切到Copy of brower的工作流,并删除多余flow,具体如下
-
点击Copy Of Browser Forms后方Action,选择execution
-
找到我们自定义SPI,也就是名称为SMS Autho…的provider
-
点击Save之后效果如下
-
点击SMS Authentication的Actions,选择config
-
按如下信息配置, Simulation mode选择on代表只在控制台发送SMS code
-
将SMS Authentication 从DISABLE设置为REQUIRED
-
进入Bindings,把Browser Flow的Browser替换成我们创建的Copy of Browser
-
创建测试用户
-
保存用户之后,需要添加mobile_number,因为我们的SPI(Provider)中有对此值进行处理,切勿写错
-
设置用户密码,并将第一次登陆需要修改密码的选项关掉
step 2.3 测试SPI(Provider)
- 开始测试,进入client的登陆地址
http://localhost:8080/realms/demo/account/
- 输入用户名密码之后,进入code页面
控制台输出
- 输入打印到控制台的Code:324989,正确进入以下页面
Step 3. 选择性拓展
step 3.1 keycloak设置指定数据库
keycloak默认以H2数据库存储,如果想指定数据库则参考以下步骤
-
编辑${keycloak_home}/conf/keycloak.conf ,将红框范围内修改自己的DB Config
-
重新./bin/kc.bat start-dev
-
keycloak已成功将表更新到了指定数据库中