隔離這幾天開發了一個帶控制檯的OAuth2授權服務器分享給大家

停更這些天,業餘時間和粉絲羣的幾個大佬合作寫了一個基於Spring Authorization ServerOAuth2授權服務器的管理控制檯項目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

截圖

說這麼多,不如放一些圖更直觀。

控制檯臺登錄
首頁
通過UI創建OAuth2客戶端
創建管理用戶
角色授權
授權登錄
授權確認

簡單用法

  • 拉取主分支最新代碼到本地。
  • 通過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提供H2Mysql兩種數據庫環境,分別對應application-h2.ymlapplication-mysql.yml兩個配置文件。

  • H2,默認數據庫,在H2環境下,數據庫DDL腳本和DML腳本會自動執行,無需開發者手動執行,該環境主要用來測試、研究、學習。
  • Mysql,生產推薦,首次啓動時開發者手動執行初始化DML腳本

目前兩種環境的效果是一致的,切換時務必在pom.xml中更換對應的數據庫驅動程序依賴。

願景

這個項目希望能夠幫助大家學習和使用OAuth2,目前項目主線功能已經完成,配置生成器和OIDC相關的功能正在跟進。希望大家多多支持,star一下。通過issues多提BUG,多提需求。

關注公衆號:Felordcn 獲取更多資訊

個人博客:https://felord.cn

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章