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

IIS子目录部署ASP.net MVC应用集成Azure AD出现Nonce验证错误

ASP.NET MVC集成Azure AD部署到IIS子目录报IDX21323错误解决方案

IDX21323错误的核心诱因是IIS子目录部署场景下,OpenID Connect(OIDC)中间件生成的nonce cookie默认路径为站点根路径/,与当前站点的实际路径/FourthProject不匹配,用户跳转到Azure AD登录完成回调时,浏览器不会携带路径不匹配的nonce cookie,导致服务端验证时无法获取到对应nonce值,触发校验失败。本地运行正常是因为本地调试环境站点默认挂载在根路径,cookie路径匹配无异常。

注意:不要直接关闭RequireNonce校验,该操作会绕过安全校验,存在明确的身份伪造风险,仅做路径适配即可解决问题

  • 第一步:显式配置OIDC中间件的路径适配逻辑
    在项目的Startup.Auth.cs文件的ConfigureAuth方法中,修改OpenIdConnect认证配置,显式指定cookie路径和回调地址:
public void ConfigureAuth(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        // 显式指定Cookie路径为当前站点子目录,也可通过HttpRuntime.AppDomainAppVirtualPath动态获取
        CookiePath = "/FourthProject",
        CookieManager = new SystemWebCookieManager()
    });

    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            ClientId = "你的Azure AD应用ClientId",
            Authority = "你的Azure AD Authority地址",
            // 回调地址必须带子目录路径,和Azure AD门户配置完全一致
            RedirectUri = "https://abc.mydominName.com/FourthProject/signin-oidc",
            PostLogoutRedirectUri = "https://abc.mydominName.com/FourthProject/",
            CookieManager = new SystemWebCookieManager(),
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                RedirectToIdentityProvider = context =>
                {
                    if (context.ProtocolMessage.RequestType == OpenIdConnectRequestType.Authentication)
                    {
                        context.ProtocolMessage.RedirectUri = "https://abc.mydominName.com/FourthProject/signin-oidc";
                    }
                    return Task.FromResult(0);
                }
            }
        });
}
  • 第二步:校验Azure AD应用注册的重定向URI配置
    登录Azure Portal进入对应AD应用的注册页面,在「身份验证」-「重定向URI」配置项中,确认已添加完整带子目录的回调地址https://abc.mydominName.com/FourthProject/signin-oidc,登出重定向URI也同步配置为带子目录的地址,必须和代码中的配置完全一致,大小写也需要匹配。

  • 第三步:排查IIS配置冲突
    如果上述配置修改后仍报错,检查是否存在父站点web.config配置继承冲突,在子站点的web.config文件根节点下添加location配置,禁止父站点配置继承到子站点:

<location path="." inheritInChildApplications="false">
  <system.web>
    <!-- 原有system.web配置保持不变 -->
  </system.web>
  <system.webServer>
    <!-- 原有system.webServer配置保持不变 -->
  </system.webServer>
</location>

同时确认子站点对应的应用池.NET Framework版本与项目依赖版本一致,应用池身份对站点目录有正常的读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:45:04