SpringBoot整合Keycloak實現單點登錄的示例代碼
Keycloak是一個開源的身份和權限訪問管理工具,輕松為應用程序和安全服務添加身份驗證,無需處理儲存用戶或者驗證用戶,其提供用戶聯(lián)合、強健的身份驗證、用戶管理和細粒度授權等功能。
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
依次執(zhí)行命令docker-compose up mysql和docker-compose up keycloak
2. 配置權限
2.1. 登陸
在瀏覽器輸入地址:http://localhost:8080,出現如下界面
點擊Administration Console,進入登錄界面
輸入用戶名和密碼:admin/123456,進入首頁
2.2. 創(chuàng)建Realm
鼠標放在下圖箭頭所指處,會彈出Add realm選項
點擊Add realm進入配置頁面,輸入realm名稱,點擊Create
配置重定向地址
2.3. 創(chuàng)建用戶
點擊左側Users選項,進入用戶創(chuàng)建頁面
點擊Add user,進入創(chuàng)建用戶,輸入用戶名稱
點擊保存,選擇Credentials配置密碼
2.4. 創(chuàng)建客戶端
點擊左側Clients選項,點擊Create
輸入Client ID名稱,點擊保存
2.5. 創(chuàng)建角色
在左側菜單欄選擇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 #客戶端所在的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
到此這篇關于SpringBoot整合Keycloak實現單點登錄的示例代碼的文章就介紹到這了,更多相關SpringBoot Keycloak單點登錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis-plus實現主鍵自增和自動注入時間的示例代碼
這篇文章主要介紹了Mybatis-plus實現主鍵自增和自動注入時間的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07