停更這些天,業餘時間和粉絲群的幾個大佬合作寫了一個基於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 獲取更多資訊