Keycloak是一个开源的身份和权限访问管理工具,轻松为应用程序和安全服务添加身份验证,无需处理储存用户或者验证用户,其提供用户联合、强健的身份验证、用户管理和细粒度授权等功能。
1. 搭建Keycloak服务器本文使用docker compose安装keycloak,因为keycloak依赖数据库,在安装keycloak之前需要先安装数据库,本文使用mysql,具体的compose配置如下:
version: '3.7'
services:
mysql:
container_name: mysql
image: mysql:latest
restart: unless-stopped
command: --lower_case_table_names=1 --sql-mode=""
ports:
- 3306:3306
volumes:
- ./db-init:/docker-entrypoint-initdb.d
- ./data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
keycloak:
container_name: keycloak
image: jboss/keycloak:latest
restart: unless-stopped
depends_on:
- mysql
environment:
DB_VENDOR: mysql
DB_USER: root
DB_PASSWORD: 123456
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: 123456
ports:
- 8080:8080
依次执行命令docker-compose up mysql和docker-compose up keycloak
在浏览器输入地址:http://localhost:8080,出现如下界面
点击Administration Console,进入登录界面
输入用户名和密码:admin/123456,进入首页
鼠标放在下图箭头所指处,会弹出Add realm选项
点击Add realm进入配置页面,输入realm名称,点击Create
配置重定向地址
点击左侧Users选项,进入用户创建页面
点击Add user,进入创建用户,输入用户名称
点击保存,选择Credentials配置密码
点击左侧Clients选项,点击Create
输入Client ID名称,点击保存
在左侧菜单栏选择Roles
点击Add Role
选择左侧菜单项Clients,配置Client和角色的关系
3.2. 编写Controllerorg.springframework.boot spring-boot-starter-web org.keycloak keycloak-spring-boot-starter 17.0.0 org.keycloak.bom keycloak-adapter-bom 17.0.0 pom import
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping("/world")
public String hello() {
return "Hello World";
}
}
3.3. 编写application.yml
server:
port: 8139
spring:
application:
name: springboot-keycloak
keycloak:
realm: springboot-keycloak #客户端所在的realm
auth-server-url: http://localhost:8080/auth #keycloak授权服务器地址
resource: sb-keycloak #客户端名称
public-client: true #声明为一个公开的客户端
security-constraints:
- auth-roles:
- sk-role
security-collections:
- name: hello
patterns:
- '/hello/world'
更多有关SpringBoot整合Keycloak的相关资料,请参阅Keycloak官网文档
4. 验证启动SpringBoot项目,在浏览器输入地址http://localhost:8139/hello/world,会重定向到keycloak登陆页面,如下图所示:
输入用户名和密码:sk-admin/123456



