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

配置Azure Front Door对接AAD时出现Correlation failed错误如何解决?

排查步骤

这个错误通常是OIDC身份验证流程中回调地址与Azure AD注册的重定向URI不匹配,或反向代理场景下请求上下文信息传递错误导致的,可按以下顺序排查:

  • 检查ForwardedHeaders配置是否缺失XForwardedHost:当前配置仅转发了XForwardedFor和XForwardedProto,缺少XForwardedHost的情况下ASP.NET Core生成的回调地址会默认使用后端池的主机名,而非Front Door的域名,导致和Azure AD注册的重定向URI不一致触发Correlation失败。
  • 检查Azure AD应用注册的重定向URI:确认注册的Web应用重定向URI为Front Door的域名(格式为https://<your-frontdoor-fqdn>/signin-oidc),而非后端原始站点的域名。
  • 检查Cookie配置:反向代理场景下如果Cookie的Secure、SameSite属性不符合要求,会导致认证过程中Cookie无法正常读取,也会触发Correlation失败。
  • 检查Front Door的转发规则:确认Front Door没有自定义规则修改或丢弃X-Forwarded-*相关请求头,默认配置下这类头会自动保留。
解决方案

1. 修正ForwardedHeaders配置

补充ForwardedHeaders.XForwardedHost,同时必须保证UseForwardedHeaders放在所有中间件的最开头,优先级高于认证、HTTPS重定向等中间件。修正后的代码如下:

services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders =
        ForwardedHeaders.XForwardedFor | 
        ForwardedHeaders.XForwardedProto | 
        ForwardedHeaders.XForwardedHost;

    options.KnownNetworks.Clear();
    options.KnownProxies.Clear();

    options.AllowedHosts = new List<string>() { "<my front door here>" };
});

管道配置示例:

var app = builder.Build();

// 必须放在所有其他中间件之前
app.UseForwardedHeaders();

// 后续再配置其他中间件
// app.UseHttpsRedirection();
// app.UseAuthentication();
// app.UseAuthorization();

2. 显式配置OIDC重定向地址

如果修正转发头后问题仍存在,可以强制指定OIDC回调地址使用Front Door域名:

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        builder.Configuration.Bind("AzureAd", options);
        options.Events.OnRedirectToIdentityProvider = context =>
        {
            context.ProtocolMessage.RedirectUri = "https://<my front door here>" + context.ProtocolMessage.RedirectUri;
            return Task.CompletedTask;
        };
    });

3. 修正Cookie安全配置

适配反向代理场景的Cookie属性要求:

services.Configure<CookiePolicyOptions>(options =>
{
    options.Secure = CookieSecurePolicy.Always;
    options.MinimumSameSitePolicy = SameSiteMode.None;
});

services.ConfigureApplicationCookie(options =>
{
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    options.Cookie.SameSite = SameSiteMode.None;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:06:06