You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8.1下开发OIDC身份提供商的最简方案

问题

我们需要集成SSO功能,让已登录本系统的用户登录第三方Web托管提供商。该提供商要求通过OIDC实现SSO,且期望我方作为身份提供商(IdP)。我方已支持Google、Microsoft、Okta用户登录本系统,了解OIDC,但此前仅实现「第三方IdP→我方」的对接,未做过「我方作为IdP→第三方」的场景。

我方系统已有20多年历史,多数用户存储于OIDC出现前的自定义凭证库,本身并非IdP,且仅支持.NET Framework 4.8.1(不支持Core/5+)。第三方要求提供:

  • 客户端ID(无问题)
  • 客户端密钥(无问题)
  • 配置URL/知名OIDC端点(存在问题,需内部配套多个端点)

我看到2012年的相关帖子,场景与我方一致,但DotNetOpenAuth仓库自2019年起已归档;IdentityServer3是支持.NET Framework的最新版本,但自2018年起未更新。请问是否有仍在维护的.NET Framework(非Core/5+)库可用于实现OIDC IdP?

回答

.NET Framework生态下,专门面向OIDC IdP场景且仍在官方维护的库确实非常有限——主流身份认证框架早已转向.NET Core/.NET 5+生态。针对你的场景,有以下几个可行方案:

1. 基于IdentityServer3做自定义维护

虽然IdentityServer3官方停更,但它是成熟稳定的OIDC IdP实现,完全适配.NET Framework,能覆盖第三方要求的所有核心端点(配置、授权、令牌、用户信息等)。你可以基于现有代码fork分支,自行维护必要的安全补丁和适配需求,这是最贴近现有技术栈的方案,无需大幅重构。

2. 手动实现核心OIDC端点

如果不想依赖停更的第三方库,可以利用微软官方维护的System.IdentityModel.Tokens.Jwt组件(支持.NET Framework 4.6.1+,已包含在.NET Framework 4.8.1中)手动实现OIDC核心端点:

  • 配置端点(.well-known/openid-configuration):返回符合OIDC规范的JSON结构,包含各端点地址、支持的签名算法、令牌有效期等信息
  • 授权端点:验证当前系统的用户登录状态,生成并返回授权码(需处理response_type、client_id等参数验证)
  • 令牌端点:验证授权码与客户端凭证,签发JWT格式的ID Token和Access Token
  • 用户信息端点:根据Access Token解析用户身份,从自定义凭证库获取用户信息并返回

这种方式灵活性最高,能完全适配自定义用户存储,且依赖的组件由微软官方维护,安全有保障。

3. 新增.NET Core中间层(可选)

如果允许新增额外服务,可以搭建轻量的.NET Core/.NET 6+服务,使用仍在维护的Duende IdentityServer(原IdentityServer4商业化版本)或IdentityServer4社区版作为中间IdP。主系统通过API将已登录用户的身份信息传递给中间层,由中间层完成OIDC协议交互。这种方案无需改动主系统的.NET Framework代码,但需要额外部署和维护服务。

内容的提问来源于stack exchange,提问作者Jordan Rieger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:35:14