停更這些天基括,業(yè)余時間和粉絲群的幾個大佬合作寫了一個基于Spring Authorization Server的OAuth2授權服務器的管理控制臺項目Id Server,我覺得這個項目能夠大大降低OAuth2授權服務器使用難度署尤∷乇辏可以讓你很方便地去管理OAuth2客戶端信息财异,甚至可以一鍵生成OAuth2配置文件姻灶。接下來簡單介紹一下Id Server這個項目红碑。
項目地址:https://github.com/NotFound403/id-server 記得Star一下名船。
主要功能
- 開箱即用绰上,簡單配置后即可使用。
- 創(chuàng)建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
文件(正在開發(fā)中)百揭。 - 提供UI控制臺,降低上手成本蜓席。
- 可動態(tài)調(diào)整管理員的用戶角色器一,對授權服務器進行按鈕功能級別的權限控制。
主要技術
- Spring Boot
- Spring Security
- Spring Authorization Server
- Spring Data JPA
- layui
- thymeleaf
- 數(shù)據(jù)庫
- H2
- Mysql
截圖
說這么多厨内,不如放一些圖更直觀祈秕。
簡單用法
- 拉取主分支最新代碼到本地。
- 通過
IdServerApplication
來啟動授權服務器雏胃。管理控制臺本地登錄路徑為http://localhost:9000/system/login
请毛,最高權限用戶為root
,密碼為idserver
丑掺。 - 你可以通過
root
用戶做這些事情:- 創(chuàng)建角色(角色管理)并為角色綁定權限获印。
- 創(chuàng)建控制臺管理用戶(用戶管理)述雾,并賦予他們角色街州。
退出功能還未完善,需要通過關閉瀏覽器來清除session玻孟。
OAuth2 測試方法
- 啟動Id Server唆缴,默認情況下在客戶端列表提供了一個內(nèi)置的OAuth2客戶端。
- 樣例客戶端在
samples
文件夾下黍翎,直接啟動面徽,瀏覽器配置文件下的http://127.0.0.1:8082/foo/bar
,進入登錄頁,輸入用戶名user
和密碼user
即可趟紊。 - 你也可以在Id Server中創(chuàng)建一個客戶端并模仿DEMO中的配置氮双,主要修改
client-id
,client-secret
,client-authentication-method
,scope
,其它選項除非你比較了解OAuth2霎匈,否則先不要動戴差,也可以通過issue咨詢。
redirect-uri
必須在授權服務器Id Server注冊客戶端時聲明铛嘱。
如何替換內(nèi)置用戶user
首先要正確區(qū)分管理用戶和普通用戶這兩個概念暖释。
管理用戶
root
及其創(chuàng)建的用戶為UI控制臺的管理用戶,超級管理員root
是目前提供了一個默認用戶墨吓,具有Id Server的最高權限球匕。如果你需要自定義,可實現(xiàn)RootUserDetailsService
接口并注入Spring IoC帖烘。
普通用戶
普通用戶就是OAuth2中的資源擁有者亮曹,主要對OAuth2客戶端的授權請求進行授權。默認提供了一個user
用來演示秘症,開發(fā)者可以實現(xiàn)OAuth2UserDetailsService
接口并注入Spring IoC來自定義用戶的來源乾忱。
多環(huán)境
目前Id Server提供H2和Mysql兩種數(shù)據(jù)庫環(huán)境,分別對應application-h2.yml
和application-mysql.yml
兩個配置文件历极。
- H2窄瘟,默認數(shù)據(jù)庫,在H2環(huán)境下趟卸,數(shù)據(jù)庫DDL腳本和DML腳本會自動執(zhí)行蹄葱,無需開發(fā)者手動執(zhí)行,該環(huán)境主要用來測試锄列、研究图云、學習。
- Mysql邻邮,生產(chǎn)推薦竣况,首次啟動時開發(fā)者手動執(zhí)行初始化DML腳本。
目前兩種環(huán)境的效果是一致的筒严,切換時務必在
pom.xml
中更換對應的數(shù)據(jù)庫驅動程序依賴丹泉。
愿景
這個項目希望能夠幫助大家學習和使用OAuth2,目前項目主線功能已經(jīng)完成鸭蛙,配置生成器和OIDC相關的功能正在跟進摹恨。希望大家多多支持,star一下娶视。通過issues多提BUG晒哄,多提需求睁宰。
關注公眾號:碼農(nóng)小胖哥,獲取更多資訊