SpringBoot整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄的示例代碼
Keycloak是一個(gè)開源的身份和權(quán)限訪問管理工具,輕松為應(yīng)用程序和安全服務(wù)添加身份驗(yàn)證,無需處理儲(chǔ)存用戶或者驗(yàn)證用戶,其提供用戶聯(lián)合、強(qiáng)健的身份驗(yàn)證、用戶管理和細(xì)粒度授權(quán)等功能。
1. 搭建Keycloak服務(wù)器
本文使用docker compose安裝keycloak,因?yàn)閗eycloak依賴數(shù)據(jù)庫(kù),在安裝keycloak之前需要先安裝數(shù)據(jù)庫(kù),本文使用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
依次執(zhí)行命令docker-compose up mysql和docker-compose up keycloak
2. 配置權(quán)限
2.1. 登陸
在瀏覽器輸入地址:http://localhost:8080,出現(xiàn)如下界面
點(diǎn)擊Administration Console,進(jìn)入登錄界面
輸入用戶名和密碼:admin/123456,進(jìn)入首頁(yè)
2.2. 創(chuàng)建Realm
鼠標(biāo)放在下圖箭頭所指處,會(huì)彈出Add realm選項(xiàng)
點(diǎn)擊Add realm進(jìn)入配置頁(yè)面,輸入realm名稱,點(diǎn)擊Create
配置重定向地址
2.3. 創(chuàng)建用戶
點(diǎn)擊左側(cè)Users選項(xiàng),進(jìn)入用戶創(chuàng)建頁(yè)面
點(diǎn)擊Add user,進(jìn)入創(chuàng)建用戶,輸入用戶名稱
點(diǎn)擊保存,選擇Credentials配置密碼
2.4. 創(chuàng)建客戶端
點(diǎn)擊左側(cè)Clients選項(xiàng),點(diǎn)擊Create
輸入Client ID名稱,點(diǎn)擊保存
2.5. 創(chuàng)建角色
在左側(cè)菜單欄選擇Roles
點(diǎn)擊Add Role
2.6. 配置用戶角色關(guān)系
2.7. 配置客戶端和角色關(guān)系
選擇左側(cè)菜單項(xiàng)Clients,配置Client和角色的關(guān)系
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授權(quán)服務(wù)器地址 resource: sb-keycloak #客戶端名稱 public-client: true #聲明為一個(gè)公開的客戶端 security-constraints: - auth-roles: - sk-role security-collections: - name: hello patterns: - '/hello/world'
更多有關(guān)SpringBoot整合Keycloak的相關(guān)資料,請(qǐng)參閱Keycloak官網(wǎng)文檔
4. 驗(yàn)證
啟動(dòng)SpringBoot項(xiàng)目,在瀏覽器輸入地址http://localhost:8139/hello/world,會(huì)重定向到keycloak登陸頁(yè)面,如下圖所示:
輸入用戶名和密碼:sk-admin/123456
到此這篇關(guān)于SpringBoot整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot Keycloak單點(diǎn)登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring boot詳解緩存redis實(shí)現(xiàn)定時(shí)過期方法
本篇文章分享的就是spring boot中的一個(gè)輪子,spring cache注解的方式實(shí)現(xiàn)接口數(shù)據(jù)緩存。默認(rèn)的配置想非常簡(jiǎn)單,但是有一個(gè)弊端是緩存數(shù)據(jù)為永久緩存,本次將介紹如何設(shè)置接口緩存數(shù)據(jù)的過期時(shí)間2022-07-07SpringBoot整合EasyExcel實(shí)現(xiàn)文件導(dǎo)入導(dǎo)出
這篇文章主要介紹了SpringBoot整合EasyExcel實(shí)現(xiàn)文件導(dǎo)入導(dǎo)出的方法,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-05-05Mybatis-plus實(shí)現(xiàn)主鍵自增和自動(dòng)注入時(shí)間的示例代碼
這篇文章主要介紹了Mybatis-plus實(shí)現(xiàn)主鍵自增和自動(dòng)注入時(shí)間的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Java實(shí)現(xiàn)簡(jiǎn)單臺(tái)球游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單臺(tái)球游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07Springboot?異步任務(wù)和定時(shí)任務(wù)的異步處理
本文介紹了Springboot異步任務(wù)和定時(shí)任務(wù)的異步處理,Springboot?中,異步任務(wù)和定時(shí)任務(wù)是經(jīng)常遇到的處理問題方式,為了能夠用好這兩項(xiàng)配置,不干擾正常的業(yè)務(wù),需要對(duì)其進(jìn)行異步化配置。怎么設(shè)置合理的異步處理線程就是其核心和關(guān)鍵,下文詳情需要的朋友可以參考下2022-05-05Spring+quartz實(shí)現(xiàn)定時(shí)發(fā)送郵件功能實(shí)例
spring提供的定時(shí)發(fā)送郵件功能一直深受廣大web開發(fā)者的喜愛,這篇文章主要介紹了Spring+quartz實(shí)現(xiàn)定時(shí)發(fā)送郵件功能實(shí)例,有興趣的可以了解一下。2017-03-03