异常:关联失败。 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();
但是仍然出现错误。有什么想法吗?
谢谢。
请检查以下几种可能的解决方法:
首先请检查回复url是否正确配置,在 Azure 门户和代码中必须相同(使用 https 协议)
检查回调路径是否设置为身份提供者,例如 /signin-oidc
用于重定向 url。(如果多个 url,请确保你有唯一的回调s 用于第二个参考)
在startup.csclass中使用Microsoft.AspNetCore.HttpOverrides;
引用。
同时检查并在 app.authentication() 上方添加 > app.UseHttpsRedirection();
;在启动配置方法中。
- 如果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.
另请参阅当 Using Azure Front Door with .NET Core | phillipsj.net.
时是否可以使用 XForward.Host
在 Azure Front Door 设置中添加后端配置时,尝试将后端主机 header 字段留空,因为它与主机名一样自动生成,可能会导致多个域出现问题。
参考文献:
我有一个与我的 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();
但是仍然出现错误。有什么想法吗?
谢谢。
请检查以下几种可能的解决方法:
首先请检查回复url是否正确配置,在 Azure 门户和代码中必须相同(使用 https 协议)
检查回调路径是否设置为身份提供者,例如
/signin-oidc
用于重定向 url。(如果多个 url,请确保你有唯一的回调s 用于第二个参考)在startup.csclass中使用
Microsoft.AspNetCore.HttpOverrides;
引用。
同时检查并在 app.authentication() 上方添加 > app.UseHttpsRedirection();
;在启动配置方法中。
- 如果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.
另请参阅当 Using Azure Front Door with .NET Core | phillipsj.net.
时是否可以使用 XForward.Host在 Azure Front Door 设置中添加后端配置时,尝试将后端主机 header 字段留空,因为它与主机名一样自动生成,可能会导致多个域出现问题。
参考文献: