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名称,点击保存
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.keycloakgroupId>
<artifactId>keycloak-spring-boot-starterartifactId>
<version>17.0.0version>
dependency>
<dependencies/>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bomgroupId>
<artifactId>keycloak-adapter-bomartifactId>
<version>17.0.0version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping("/world")
public String hello() {
return "Hello World";
}
}
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官网文档
启动SpringBoot项目,在浏览器输入地址http://localhost:8139/hello/world,会重定向到keycloak登陆页面,如下图所示:
输入用户名和密码:sk-admin/123456