停更這些天,業余時間和粉絲群的幾個大佬合作寫了一個基于Spring Authorization Server的OAuth2授權服務器的管理控制臺專案Id Server,我覺得這個專案能夠大大降低OAuth2授權服務器使用難度,可以讓你很方便地去管理OAuth2客戶端資訊,甚至可以一鍵生成OAuth2組態檔,接下來簡單介紹一下Id Server這個專案,
專案地址:https://github.com/NotFound403/id-server 記得Star一下,
主要功能
- 開箱即用,簡單配置后即可使用,
- 創建OAuth2客戶端,并對OAuth2客戶端進行管理,
- 提供OAuth2授權服務,
- 支持四種客戶端認證方式:
- CLIENT_SECRET_BASIC
- CLIENT_SECRET_POST
- CLIENT_SECRET_JWT
- PRIVATE_KEY_JWT
- 支持三種OAuth2授權方式:
- AUTHORIZATION_CODE
- CLIENT_CREDENTIALS
- REFRESH_TOKEN
- OIDC 1.0的支持(完善中),
- 一鍵生成配置
yaml檔案(正在開發中), - 提供UI控制臺,降低上手成本,
- 可動態調整管理員的用戶角色,對授權服務器進行按鈕功能級別的權限控制,
主要技術
- Spring Boot
- Spring Security
- Spring Authorization Server
- Spring Data JPA
- layui
- thymeleaf
- 資料庫
- H2
- Mysql
截圖
說這么多,不如放一些圖更直觀,







簡單用法
- 拉取主分支最新代碼到本地,
- 通過
IdServerApplication來啟動授權服務器,管理控制臺本地登錄路徑為http://localhost:9000/system/login,最高權限用戶為root,密碼為idserver, - 你可以通過
root用戶做這些事情:- 創建角色(角色管理)并為角色系結權限,
- 創建控制臺管理用戶(用戶管理),并賦予他們角色,
退出功能還未完善,需要通過關閉瀏覽器來清除session,
OAuth2 測驗方法
- 啟動Id Server,默認情況下在客戶端串列提供了一個內置的OAuth2客戶端,
- 樣例客戶端在
samples檔案夾下,直接啟動,瀏覽器組態檔下的http://127.0.0.1:8082/foo/bar,進入登錄頁,輸入用戶名user和密碼user即可, - 你也可以在Id Server中創建一個客戶端并模仿DEMO中的配置,主要修改
client-id,client-secret,client-authentication-method,scope,其它選項除非你比較了解OAuth2,否則先不要動,也可以通過issue咨詢,
redirect-uri必須在授權服務器Id Server注冊客戶端時宣告,
如何替換內置用戶user
首先要正確區分管理用戶和普通用戶這兩個概念,
管理用戶
root及其創建的用戶為UI控制臺的管理用戶,超級管理員root是目前提供了一個默認用戶,具有Id Server的最高權限,如果你需要自定義,可實作RootUserDetailsService介面并注入Spring IoC,
普通用戶
普通用戶就是OAuth2中的資源擁有者,主要對OAuth2客戶端的授權請求進行授權,默認提供了一個user用來演示,開發者可以實作OAuth2UserDetailsService介面并注入Spring IoC來自定義用戶的來源,
多環境
目前Id Server提供H2和Mysql兩種資料庫環境,分別對應application-h2.yml和application-mysql.yml兩個組態檔,
- H2,默認資料庫,在H2環境下,資料庫DDL腳本和DML腳本會自動執行,無需開發者手動執行,該環境主要用來測驗、研究、學習,
- Mysql,生產推薦,首次啟動時開發者手動執行初始化DML腳本,
目前兩種環境的效果是一致的,切換時務必在
pom.xml中更換對應的資料庫驅動程式依賴,
愿景
這個專案希望能夠幫助大家學習和使用OAuth2,目前專案主線功能已經完成,配置生成器和OIDC相關的功能正在跟進,希望大家多多支持,star一下,通過issues多提BUG,多提需求,
關注公眾號:Felordcn 獲取更多資訊
個人博客:https://felord.cn
|
博主:碼農小胖哥 出處:felord.cn 本文著作權歸原作者所有,不可商用,轉載需要宣告出處,否則保留追究法律責任的權利,如果文中有什么錯誤,歡迎指出,以免更多的人被誤導, |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/472855.html
標籤:Java
