AgileConfig 已經好久好久沒有更新過比較大的功能了。一是 AgileConfig 本身的定位就是比較輕量,不想整合太多的功能。二是比較忙(懶)。但是本次升級給大家帶來了一個比較有用的功能 SSO。
SSO 嘛大家都懂,單點登入,稍微上點規模的公司內部都會有統一的單點登入服務。
目前 SSO 主流協定基本上就是兩種:
本次 SSO 的實現採用了基於 OIDC 協定的 Code Flow 模式來實現,可以說這是目前市面上最流行的整合方案。
由於這次不是討論 OIDC 的具體實現,關於 OIDC 相關的知識就不多說了。
圖片出處:https://docs.walt.id/v/idpkit/concepts/oidc-recap
以下對設定的引數進行詳細說明:
引數 | 說明 | 範例 |
---|---|---|
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
表進行了修改,如是從低版本升級上來的請手動調整資料庫:
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
QQ群:1022985150 VX:kklldog 一起探討學習.NET技術
作者:Agile.Zhou(kklldog)
出處:http://www.cnblogs.com/kklldog/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。