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
如何使用
- 升级 AgileConfig 到最新版本或者 tag:1.7.0 以上
- 在配置文件或者环境变量中配置 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
关注我的公众号一起玩转技术

AgileConfig-1.7.0 发布,支持 SSO 🎉🎉🎉的更多相关文章
- AgileConfig 1.6.0 发布 - 支持服务注册与发现
大家好,好久没有输出博文了,一是因为比较忙,另外一个原因是最近主要的精力是在给 AgileConfig 添加一个新的功能:服务注册与发现. 先说说为什么会添加这个功能.我自己的项目是用 Consul ...
- Visual Studio Code 1.0发布,支持中文在内9种语言
Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...
- Scut游戏服务器引擎6.0.5.0发布-支持C#脚本
1. 增加C#脚本支持2. 增加Pay和Sns中间件对Mysql数据库支持3. 精简布署步骤,取消Redis写入程序,将其移到游戏底层运行4. 修正Mysql对中文可能会出现乱码的BUG 点击下载:S ...
- Omi应用md2site-0.5.0发布-支持动态markdown拉取解析
写在前面 Md2site是基于Omi的一款Markdown转网站工具,使用简单,生成的文件轻巧,功能强大. 官网:http://alloyteam.github.io/omi/md2site/ Git ...
- AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制
AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念.但是很多同学在使用过后都提出了需要多用户支持的建议.整个团队或者整个公司都使用同一个密码来管理非常的 ...
- AgileConfig轻量级配置中心1.4.0发布,重构了发布功能
加入 NCC 先说一个事,AgileConfig 在 7 月底终于通过了 NCC 社区的审核,正式成为了 NCC 大家庭的一员.这对 AgileConfig 来说是一个里程碑,希望加入 NCC 后能更 ...
- Restful.Data v2.0发布,谢谢你们的支持和鼓励
v1.0发布后,承蒙各位博友们的热心关注,也给我不少意见和建议,在此我真诚的感谢 @冰麟轻武 等朋友,你们的支持和鼓励,是这个开源项目最大的推动力. v2.0在除了细枝末节外,在功能上主要做了一下更新 ...
- jQuery 2.0发布,不再支持IE6/7/8
有时发现jQuery库引用的都对,javascript代码写的也没问题,可是jquery就是出现问题,额--我发现换个jquery库就没问题了,长时间不关注jquery的问题而已: 很多人都没有使用最 ...
- [OIDC in Action] 3. 基于OIDC(OpenID Connect)的SSO(添加Github OAuth 2.0的支持)
在上上一篇基于OIDC的SSO的登录页面的截图中有出现QQ登录的地方.这个其实是通过扩展OIDC的OpenID Provider来实现的,OpenID Provider简称OP,OP是OIDC的一个很 ...
- [OSChina]VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持--尝试一下
VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持 https://www.oschina.net/news/102838/virtualbox-6-0-0-released ...
随机推荐
- Selenium - 浏览器配置(1) - 忽略证书错误提示
Selenium - 浏览器配置 忽略证书错误提示 有时候我们访问一些地址,会提示证书私密连接告警信息如下: 如果我们每次要点击高级来忽略私密连接,那就很麻烦: 在谷歌浏览器可以增加忽略证书错误问题, ...
- MultiBoot SPI
对于7系列FPGA来说,计算器件启动时间按照以下公式: Config time = Bitstream size / (Config clk freq * Config interface width ...
- Jan 2023-Prioritizing Samples in Reinforcement Learning with Reducible Loss
1 Introduction 本文建议根据样本的可学习性进行抽样,而不是从经验回放中随机抽样.如果有可能减少代理对该样本的损失,则认为该样本是可学习的.我们将可以减少样本损失的数量称为其可减少损失(R ...
- 解决echarts图形由于label过长导致文字显示不全问题
使用echarts 打印饼图,在pc没问题,但一到移动端问题就来了,由于屏幕过小,导致label部分被遮挡 一.问题分析 如上图这个就尴尬了,囧么办呢? 还好echarts 提供了formatter方 ...
- es笔记六之聚合操作之指标聚合
本文首发于公众号:Hunter后端 原文链接:es笔记六之聚合操作之指标聚合 聚合操作,在 es 中的聚合可以分为大概四种聚合: bucketing(桶聚合) mertic(指标聚合) matrix( ...
- wait,notify,notifyAll,sleep,join等线程方法的全方位演练
一.概念解释 1. 进入阻塞: 有时我们想让一个线程或多个线程暂时去休息一下,可以使用 wait(),使线程进入到阻塞状态,等到后面用到它时,再使用notify().notifyAll() 唤醒它,线 ...
- 明解STM32—GPIO应用设计篇之IO外部中断EXTI原理及使用方法
一.前言 在之前针对STM32的GPIO相关API函数及配置使用进行了详细的介绍,GPIO作为输入引脚时,调用相关读信号引脚函数接口就可以在程序的循环中,轮询的对输入信号进行读取检测操作,除了轮询的 ...
- .Net8罕见的技术:MSIL的机器码简析
前言 一般的只有最终的汇编代码才有机器码表示,然一个偶然的机会发现,MSIL(Microsoft intermediate language)作为一个中间语言表示,居然也有机器码,其实这也难怪,计算机 ...
- Mybatis的ResultMap对column和property的理解
Mybatis的ResultMap对column和property的理解 首先,先看看这张图,看能不能一下看明白: select元素有很多属性(这里说用的比较多的): id:命名空间唯一标识,可以被用 ...
- MySQL读取的记录和我想象的不一致
摘要:并发的事务在运行过程中会出现一些可能引发一致性问题的现象,本篇将详细分析一下. 本文分享自华为云社区<MySQL读取的记录和我想象的不一致--事物隔离级别和MVCC>,作者:砖业洋_ ...