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

关注我的公众号一起玩转技术

AgileConfig-1.7.0 发布,支持 SSO 🎉🎉🎉的更多相关文章

  1. AgileConfig 1.6.0 发布 - 支持服务注册与发现

    大家好,好久没有输出博文了,一是因为比较忙,另外一个原因是最近主要的精力是在给 AgileConfig 添加一个新的功能:服务注册与发现. 先说说为什么会添加这个功能.我自己的项目是用 Consul ...

  2. Visual Studio Code 1.0发布,支持中文在内9种语言

    Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...

  3. Scut游戏服务器引擎6.0.5.0发布-支持C#脚本

    1. 增加C#脚本支持2. 增加Pay和Sns中间件对Mysql数据库支持3. 精简布署步骤,取消Redis写入程序,将其移到游戏底层运行4. 修正Mysql对中文可能会出现乱码的BUG 点击下载:S ...

  4. Omi应用md2site-0.5.0发布-支持动态markdown拉取解析

    写在前面 Md2site是基于Omi的一款Markdown转网站工具,使用简单,生成的文件轻巧,功能强大. 官网:http://alloyteam.github.io/omi/md2site/ Git ...

  5. AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制

    AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念.但是很多同学在使用过后都提出了需要多用户支持的建议.整个团队或者整个公司都使用同一个密码来管理非常的 ...

  6. AgileConfig轻量级配置中心1.4.0发布,重构了发布功能

    加入 NCC 先说一个事,AgileConfig 在 7 月底终于通过了 NCC 社区的审核,正式成为了 NCC 大家庭的一员.这对 AgileConfig 来说是一个里程碑,希望加入 NCC 后能更 ...

  7. Restful.Data v2.0发布,谢谢你们的支持和鼓励

    v1.0发布后,承蒙各位博友们的热心关注,也给我不少意见和建议,在此我真诚的感谢 @冰麟轻武 等朋友,你们的支持和鼓励,是这个开源项目最大的推动力. v2.0在除了细枝末节外,在功能上主要做了一下更新 ...

  8. jQuery 2.0发布,不再支持IE6/7/8

    有时发现jQuery库引用的都对,javascript代码写的也没问题,可是jquery就是出现问题,额--我发现换个jquery库就没问题了,长时间不关注jquery的问题而已: 很多人都没有使用最 ...

  9. [OIDC in Action] 3. 基于OIDC(OpenID Connect)的SSO(添加Github OAuth 2.0的支持)

    在上上一篇基于OIDC的SSO的登录页面的截图中有出现QQ登录的地方.这个其实是通过扩展OIDC的OpenID Provider来实现的,OpenID Provider简称OP,OP是OIDC的一个很 ...

  10. [OSChina]VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持--尝试一下

    VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持 https://www.oschina.net/news/102838/virtualbox-6-0-0-released ...

随机推荐

  1. Docker入门与实战-Docker镜像的使用

    Docker入门与实战 二.Docker镜像的使用 1.获取镜像 ​ 命令:docker [image] pull image-name[:tag] ​ 说明: ​ name为镜像仓库名称,严格来说, ...

  2. SQL Server修改列的数据类型

    ALTER TABLE LJPA001H DROP CONSTRAINT DF_LJPA001H_pa_sex_1 ALTER TABLE LJPA001H ALTER COLUMN pa_sex V ...

  3. import MySQLdb as Database ModuleNotFoundError: No module named ‘MySQLdb‘

    import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb' import MySQLdb as Database ...

  4. qq飞车端游最全按键指法教学

    目录 起步篇 超级起步 弹射起步 段位起步 基础篇 点飘 撞墙漂移 撞墙点喷 进阶篇 双喷 叠喷 断位漂移 段位双喷 侧身漂移 快速出弯 CW WCW CWW 牵引 甩尾点飘 甩尾漂移 右侧卡 左侧卡 ...

  5. 【python基础】循环语句-break关键字

    1.break关键字 break关键字,其作用是在循环中的代码块遇到此关键字,立刻跳出整个循环,执行循环外的下一条语句. 其在while和for循环中的作用示意图如下: 1.1break在while循 ...

  6. 【HMS Core】【In-App Purchases】应用内支付热门FAQ合集

    ​近期收到很多开发者关于应用内支付服务的相关问题,主要集中在以下几个方面,今天和大家分享一下,希望给大家的开发集成带来帮助. [问题描述1] 近期,很多开发者收到关于"全面限制HTTP类型回 ...

  7. WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(6)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  8. 聊聊Zookeeper的Session会话超时重连

    概述 简单地说,ZooKeeper的连接与会话就是客户端通过实例化ZooKeeper对象来实现客户端与服务器创建并保持TCP连接的过程.本质上,Session就是一个TCP 长连接. 会话 Sessi ...

  9. java后端接入微信小程序登录功能

    前言 此文章是Java后端接入微信登录功能,由于项目需要,舍弃了解密用户信息的session_key,只保留openid用于检索用户信息 后端框架:spring boot 小程序框架:uniapp 流 ...

  10. python图表展示实例

    """Created on Fri Nov 8 16:09:36 2019 @author: DELL""" ""&qu ...