Keycloak是一个开源的身份和权限访问管理工具,轻松为应用程序和安全服务添加身份验证,无需处理储存用户或者验证用户,其提供用户联合、强健的身份验证、用户管理和细粒度授权等功能。

1. 搭建Keycloak服务器

本文使用docker compose安装keycloak,因为keycloak依赖数据库,在安装keycloak之前需要先安装数据库,本文使用mysql,具体的compose配置如下:

version: '3.7'
services:mysql:container_name: mysqlimage: mysql:latestrestart: unless-stoppedcommand: --lower_case_table_names=1 --sql-mode=""ports:- 3306:3306volumes:- ./db-init:/docker-entrypoint-initdb.d- ./data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456keycloak:container_name: keycloakimage: jboss/keycloak:latestrestart: unless-stoppeddepends_on:- mysqlenvironment:DB_VENDOR: mysqlDB_USER: rootDB_PASSWORD: 123456KEYCLOAK_USER: adminKEYCLOAK_PASSWORD: 123456ports:- 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. 创建角色

在左侧菜单栏选择Roles

点击Add Role

2.6. 配置用户角色关系

2.7. 配置客户端和角色关系

选择左侧菜单项Clients,配置Client和角色的关系

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 #客户端所在的realmauth-server-url: http://localhost:8080/auth #keycloak授权服务器地址resource: sb-keycloak #客户端名称public-client: true #声明为一个公开的客户端security-constraints:- auth-roles:- sk-rolesecurity-collections:- name: hellopatterns:- '/hello/world'

更多有关SpringBoot整合Keycloak的相关资料,请参阅Keycloak官网文档

4. 验证

启动SpringBoot项目,在浏览器输入地址http://localhost:8139/hello/world,会重定向到keycloak登陆页面,如下图所示:

输入用户名和密码:sk-admin/123456

SpringBoot整合Keycloak实现单点登录相关推荐

  1. CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录

    CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录 1.1 什么是单点登录 1.2 什么是CAS 1.3 CAS服务端部署 1.template下载 1.4 客户端搭建 1.1 什么是 ...

  2. SpringBoot整合微信扫码登录

    SpringBoot整合微信扫码登录 准备工作 基本思路流程 搭建SpringBoot 引入依赖 加入配置文件 代码实现 工具类 controller层 结果 准备工作 1.登录官网了解到,学习者想本 ...

  3. SpringSecurity整合Redis实现单点登录及认证返回json数据

    前一阵刚研究了shiro框架,现在再来研究一下SpringSecurity. SpringSecurity是由spring团队开发的,为web应用安全性提供了完整的解决方案的框架.虽然现在使用spri ...

  4. spring boot整合Shiro实现单点登录

    默认情况下,Shiro已经为我们实现了和Cas的集成,我们加入集成的一些配置就ok了 1.加入shiro-cas包 <!-- shiro整合cas单点 --><dependency& ...

  5. C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结

    为什么80%的码农都做不了架构师?>>>    有人曾问,如何正确估算项目周期?你是天天写C#程序的程序员,若做了一个 PHPwind 的单点登录,那估计需要几天时间? 客户只提了一 ...

  6. springboot redis shiro 实现 单点登录

    大家好,我是烤鸭: 今天给大家分享简单的单点登录的实现方式. 环境及jar包: springboot     1.5.10 redis    2.9.0    (可以用tomcat的session,但 ...

  7. SpringBoot+OAuth2+JWT实现单点登录SSO完整教程,竟如此简单优雅!

    作者:狂乱的贵公子 来源:https://www.cnblogs.com/cjsblog/p/10548022.html 1.前言 技术这东西吧,看别人写的好像很简单似的,到自己去写的时候就各种问题, ...

  8. (附源码)Spring Boot 框架整合 OAuth2 实现单点登录 SSO 详细完整源码教程!

    1.  前言 技术这东西吧,看别人写的好像很简单似的,到自己去写的时候就各种问题,"一看就会,一做就错".网上关于实现SSO的文章一大堆,但是当你真的照着写的时候就会发现根本不是那 ...

  9. SpringBoot整合小程序微信登录功能

    一.SpringBoot整合微信登录 ​ 小程序的使用已经是一个普遍的现象,对于刚学习SpringBoot的我们来说完全的写好一套微信登录的案例有一定的难度,这里结合自己的一些学习经验,把微信登录这一 ...

最新文章

  1. eclipse 中修改 M2_REPO的值--转载
  2. [密码学] 离散对数比特安全性
  3. 项目上传github步骤
  4. Android Ap 开发 设计模式第六篇:原型模式
  5. 如何在SharePoint 2010项目中引用UserProfiles.dll
  6. 阿里面试官整理的JVM面试要点,99%的你都不知道!
  7. VMware Sphere 虚拟磁盘创建选项
  8. 【渝粤教育】21秋期末考试管理学原理★10013k1
  9. pandas 数据结构与基础功能
  10. 引言:扇贝 2017 服务端技术回顾
  11. IDEA---SVN安装及配置
  12. (原)SCOR模型在化工行业的应用
  13. 蓝牙音频中Classic Audio和LEAudio对比和区别
  14. 小波变换(matlab)-常见脚本函数
  15. php中alight是什么意思,进阶PHP需要注意的一些点
  16. 今天发现一个好的修图软件
  17. 广东省2022下半年软考报名时间已定!
  18. Java就业方向和自学提升方法总结黑马就业班资源分享
  19. 【数论】GDKOI day1 讲座(数论基本知识 详)
  20. php mysql 排班表_要做排班表 灵活性比较强的

热门文章

  1. (VS)c++调用matlab函数
  2. 腾讯云物联网MQTT对接
  3. scrollView 横向
  4. Java实现线性回归模型算法
  5. JavaScript - 四舍五入
  6. 渗透常用SQL注入语句大全
  7. Test on 12/01/2018
  8. https 单向认证和双向认证
  9. 皕杰报表在chrome中emitter=print无效问题的解决
  10. SourceInsight | source insight使用技巧