异常:关联失败。 AAD + Azure 前门

Exception: Correlation failed. AAD + Azure Front Door

我有一个与我的 REST API 通信的 Web 应用程序(ASP.NET Core MVC)。它们都配置为使用 Azure Active Directory。 现在我正在尝试为应用程序配置 Azure Front Door,但出现以下错误:

或者这个:

我为 http-s 重定向设计了前门,为网站配置了后端池以使用自己的主机名。

我也配置了转发headers:

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

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

            // Put your front door FQDN here and any other hosts that will send headers you want respected
            options.AllowedHosts = new List<string>() { "<my front door here>" };
        });

...

        app.UseForwardedHeaders();

但是仍然出现错误。有什么想法吗?

谢谢。

请检查以下几种可能的解决方法:

  1. 首先请检查回复url是否正确配置,在 Azure 门户和代码中必须相同(使用 https 协议)

  2. 检查回调路径是否设置为身份提供者,例如 /signin-oidc 用于重定向 url。(如果多个 url,请确保你有唯一的回调s 用于第二个参考)

  3. 在startup.csclass中使用Microsoft.AspNetCore.HttpOverrides; 引用。

同时检查并在 app.authentication() 上方添加 > app.UseHttpsRedirection();;在启动配置方法中。

  1. 如果ConfigureServices方法,从Startup.cs有

.services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

原因可能是 cookie 没有被设置为安全的。尝试在 services.AddAuthentication 之前将 cookie 存储为安全的。

services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;//add if consent needed
        options.MinimumSameSitePolicy = SameSiteMode.None; // else try  SameSiteMode.Lax;

         options.Secure = CookieSecurePolicy.Always;

    });

并在 Startup.cs 中的 Configure() 方法中调用 app.UseRouting() 之前从 app.UseCookiePolicy() 调用 cookie 策略。

Also try to set the enable cookie settings in browser.

  1. 另请参阅当 Using Azure Front Door with .NET Core | phillipsj.net.

    时是否可以使用 XForward.Host
  2. 在 Azure Front Door 设置中添加后端配置时,尝试将后端主机 header 字段留空,因为它与主机名一样自动生成,可能会导致多个域出现问题。

参考文献:

  1. solving-azure-ad-sign-in-failure-with-azure-front-door
  2. Asp.net Core 2.0 Identity with multiple OIDC providers