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

如何实现MVC 4与.Net Core应用跨多域名Single Sign On单点登录

MVC4 与 .NET Core 跨多域名单点登录(SSO)实现方案

原有基于MachineKey的SSO方案仅支持ASP.NET 4.x技术栈,.NET Core采用全新的Data Protection数据保护体系,二者默认的身份票据加密规则、Cookie格式互不兼容,且基于同根域名共享Cookie的原生方案本身就不支持跨多顶级域名场景,因此需要做架构改造适配。

方案一:基于OIDC协议的统一认证中心模式(推荐,原生支持跨多域名)

该方案是业界跨技术栈、跨域名SSO的标准实现,可支持任意数量、任意技术栈的应用接入,无需依赖Cookie同域限制。

  • 第一步:搭建统一身份认证服务,作为唯一的身份凭证颁发和校验入口,可直接基于.NET Core Identity + IdentityServer 实现标准化的OIDC 2.0 + OAuth 2.0服务端
  • 第二步:改造MVC4应用,安装Microsoft.Owin.Security.OpenIdConnect系列Nuget包,将原有Forms认证逻辑替换为OIDC授权码流认证,未登录请求统一跳转至认证中心
  • 第三步:改造.NET Core应用,使用原生AddOpenIdConnect扩展方法配置OIDC客户端,对接同一认证中心
  • 登录状态通过认证中心的全局Cookie共享:用户在任意一个子应用完成登录后,访问其他子应用时会自动跳转至认证中心做身份校验,无需重复输入账号密码即可完成登录

方案二:MachineKey兼容模式(仅适用于所有应用都属于同根域名的场景)

如果所有应用均部署在同一个根域名下(例如a.example.com、b.example.com,根域为example.com),可以通过兼容配置实现两边Cookie互通,无需搭建独立认证服务。

  • 统一两边的基础配置:Cookie名称、作用域、有效期完全一致,例如统一设置Cookie名称为SharedAuthCookie,Cookie域为.example.com
  • .NET Core端配置Data Protection兼容ASP.NET 4.x的加密规则,示例代码如下:
// Program.cs 配置
builder.Services.AddDataProtection()
    .SetApplicationName("统一共享的应用名称") // 两边应用名必须完全一致
    .SetCompatibilityMode(CompatibilityMode.AspNet40) // 开启ASP.NET 4.x加密格式兼容
    .ProtectKeysWithDpapiNG(); // Windows部署可使用该配置,跨平台部署可替换为证书加密
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.Name = "SharedAuthCookie";
        options.Cookie.Domain = ".example.com";
        options.Cookie.Path = "/";
    });
  • MVC4端修改web.config配置,和.NET Core端参数对齐:
<system.web>
  <!-- 密钥和加密算法必须和.NET Core端完全匹配 -->
  <machineKey validationKey="自定义的32位以上校验密钥" decryptionKey="自定义的16位以上解密密钥" validation="SHA256" decryption="AES" />
  <authentication mode="Forms">
    <forms name="SharedAuthCookie" domain=".example.com" loginUrl="/Account/Login" protection="All" path="/" timeout="30" />
  </authentication>
</system.web>
  • 统一两边的用户身份标识序列化规则,确保MVC4写入Forms票据的用户ID、权限等Claims字段,和.NET Core端读取的Claims字段完全对应。

注意事项

  • 跨多个顶级域名的场景必须使用方案一,浏览器同源策略禁止不同根域名的应用共享Cookie,方案二无法生效
  • 生产环境所有加密密钥禁止硬编码在配置文件中,建议使用加密配置存储、密钥管理服务托管密钥
  • 迁移阶段可以保留原有MVC4的登录逻辑,逐步切流到新的认证体系,降低业务影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:02