停更這些天,業餘時間和粉絲群的幾個大佬合作寫了一個基於Spring Authorization Server的OAuth2授權伺服器的管理控制台項目Id Server,我覺得這個項目能夠大大降低OAuth2授權伺服器使用難度。可以讓你很方便地去管理OAuth2客戶端信息,甚至可以一鍵生成OAuth2 ...
停更這些天,業餘時間和粉絲群的幾個大佬合作寫了一個基於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 獲取更多資訊
博主:碼農小胖哥 出處:felord.cn 本文版權歸原作者所有,不可商用,轉載需要聲明出處,否則保留追究法律責任的權利。如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。 |