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
2. 配置权限
2.1. 登陆
在浏览器输入地址:http://localhost:8080,出现如下界面
点击Administration Console,进入登录界面
输入用户名和密码:admin/123456,进入首页
2.2. 创建Realm
鼠标放在下图箭头所指处,会弹出Add realm选项
点击Add realm进入配置页面,输入realm名称,点击Create
配置重定向地址
2.3. 创建用户
点击左侧Users选项,进入用户创建页面
点击Add user,进入创建用户,输入用户名称
点击保存,选择Credentials配置密码
2.4. 创建客户端
点击左侧Clients选项,点击Create
输入Client ID名称,点击保存
2.5. 创建角色
2.6. 配置用户角色关系
2.7. 配置客户端和角色关系
3. 整合SpringBoot
3.1. 引入核心依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>17.0.0</version>
</dependency>
<dependencies/>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>17.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.2. 编写Controller
@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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76770.html