AgileConfig-1.7.0 發佈,支持 SSO 🎉🎉🎉

AgileConfig 已經好久好久沒有更新過比較大的功能了。一是 AgileConfig 本身的定位就是比較輕量,不想集成太多的功能。二是比較忙(懶)。但是本次升級給大家帶來了一個比較有用的功能 SSO。

SSO 嘛大家都懂,單點登錄,稍微上點規模的公司內部都會有統一的單點登錄服務。
目前 SSO 主流協議基本上就是兩種:

  • OIDC(OAuth2.0) - OpenID Connect
  • SAML 2.0 - Security Assertion Markup Language

本次 SSO 的實現採用了基於 OIDC 協議的 Code Flow 模式來實現,可以說這是目前市面上最流行的集成方案。
由於這次不是討論 OIDC 的具體實現,關於 OIDC 相關的知識就不多說了。

圖片出處:https://docs.walt.id/v/idpkit/concepts/oidc-recap

如何使用

  1. 升級 AgileConfig 到最新版本或者 tag:1.7.0 以上
  2. 在配置文件或者環境變量中配置 SSO 相關信息

以下對配置的參數進行詳細說明:

參數說明

參數 說明 示例
SSO:enabled 是否開啓 sso true
SSO:loginButtonText 自定義 SSO 跳轉按鈕的文字 Azure SSO
SSO:OIDC:clientId OIDC 客戶端 ID 2bb823b7-f1ad-48c7-a9a1-713e9a885a5d
SSO:OIDC:clientSecret OIDC 客戶端 密鑰 6B29FC40-CA47-1067-B31D-00DD010662DA
SSO:OIDC:redirectUri OIDC Server 授權成功後的回調地址, 默認爲服務部署域名(或者ip+port)+ /sso http://localhost:5000/sso
SSO:OIDC:tokenEndpoint code 獲取 token 的地址,這個地址一般在 OIDC 服務商那裏會明確告知 https://login.microsoftonline.com/7aa25791-9a8c-4be4-872f-289bfec8cddb/oauth2/v2.0/token
SSO:OIDC:tokenEndpointAuthMethod 獲取 token 接口的認證方案,目前支持:client_secret_post, client_secret_basic, none 三種方案,默認爲:client_secret_post client_secret_post
SSO:OIDC:authorizationEndpoint OIDC Server 授權地址,通常是 OIDC 服務商會明確告知。本地服務會加上 response_type,redirect_uri 等參數,構造出完整的授權 URL https://login.microsoftonline.com/7aa25791-9a8c-4be4-872f-289bfec8cddb/oauth2/v2.0/authorize
SSO:OIDC:userIdClaim ID token 中用戶 ID 的 claim key,默認爲 sub sub
SSO:OIDC:userNameClaim ID token 中用戶 name 的 claim key,默認爲 name name
SSO:OIDC:scope token 攜帶的 claim 的範圍,默認 openid profile openid profile

如果使用源碼運行請對 appsettings.json 進行修改,示例如下:

  "SSO": {
    "enabled": true, 
    "loginButtonText": "SSO",
    "OIDC": {
      "clientId": "2bb823b7-f1ad-48c7-a9a1-713e9a885a5d",
      "clientSecret": "", 
      "redirectUri": "http://localhost:5000/sso", 
      "tokenEndpoint": "https://login.microsoftonline.com/7aa25791-9a8c-4be4-872f-289bfec8cddb/oauth2/v2.0/token",
      "tokenEndpointAuthMethod": "client_secret_post", client_secret_post, client_secret_basic, none. default=client_secret_post.
      "authorizationEndpoint": "https://login.microsoftonline.com/7aa25791-9a8c-4be4-872f-289bfec8cddb/oauth2/v2.0/authorize", 
      "userIdClaim": "sub", 
      "userNameClaim": "name", 
      "scope": "openid profile" 
    }
  }

如果使用 docker compose 運行請使用環境變量修改配置:


  agile_config:
    image: "kklldog/agile_config:latest"
    ports:
      - "15000:5000"
    networks:
      - net0
    volumes:
      - /etc/localtime:/etc/localtime
    environment:
      - TZ=Asia/Shanghai
      - adminConsole=true
      - db:provider=mysql
      - db:conn= Allow User Variables=true;database=agile_config_preview;data source=mysql8;User Id=root;password=1;

      - SSO:enabled=true
      - SSO:loginButtonText=Azure SSO
      - SSO:OIDC:clientId=2bb823b7-f1ad-48c7-a9a1-713e9a885a5d
      - SSO:OIDC:clientSecret=1
      - SSO:OIDC:redirectUri=https://agileconfig-server.xbaby.xyz/sso
      - SSO:OIDC:tokenEndpoint=https://login.microsoftonline.com/7aa25791-9a8c-4be4-872f-289bfec8cddb/oauth2/v2.0/token
      - SSO:OIDC:authorizationEndpoint=https://login.microsoftonline.com/7aa25791-9a8c-4be4-872f-289bfec8cddb/oauth2/v2.0/authorize

數據庫表更新

本次發佈對 agc_user 表進行了修改,如是從低版本升級上來的請手動調整數據庫:

  • id 長度增加到 50
  • 新增一個字段source ,mysql的類型爲 enum(Normal, SSO),sql server 的類型爲 int

後續

目前 SSO、OIDC 的相關配置通過配置文件或者環境變量來配置略顯麻煩,後面如有時間會新增相關界面來進行配置,敬請期待。如果同學你有時間,那麼可以給我 PR ,讓我們一起爲 .NET 的生態盡一份力。

最後

✨✨✨ Github地址:https://github.com/dotnetcore/AgileConfig 開源不易,歡迎 star ✨✨✨

演示地址:http://agileconfig-server.xbaby.xyz/ 超管賬號:admin 密碼:123456

關注我的公衆號一起玩轉技術

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