簡體   English   中英

在反向代理后面使用 Azure AD 身份驗證的 ASP.NET Core 應用程序設置了錯誤的 redirect_uri

[英]ASP.NET Core app with Azure AD authentication behind a reverse proxy is setting the wrong redirect_uri

我一直在敲我的頭一段時間。 我有一個在 Azure 應用服務上運行的 ASP.NET Core 3.1 Web 應用。 Web 應用程序具有 Azure AD 身份驗證設置和轉發標頭。 這是ConfigureService

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

services
    .AddAuthentication(AzureADDefaults.AuthenticationScheme)
    .AddAzureAD(options =>
    {
        Configuration.Bind("AzureAd", options);
    });

這是Configure

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseForwardedHeaders();
}
else
{
    app.UseExceptionHandler("/Error");
    app.UseForwardedHeaders();
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();

app.UseRouting();
app.UseCors(Configuration["AllowedHosts"]);
app.UseAuthentication();
app.UseAuthorization();

我使用 Azure 應用程序網關作為反向代理。 認證流程出現問題。 通過身份驗證后,URL 中提供的 redirect_uri 是*.azurewebsites.net地址,而不是我在 App Gateway *.mydomain.com配置的地址 進一步調查顯示,在請求中向應用服務提供了以下標頭:

X-FORWARDED-PROTO: https
X-FORWARDED-PORT: 443
X-Forwarded-For: ***IP ADDR OF APP GATEWAY***
X-Original-URL: ***
X-ORIGINAL-HOST: *.mydomain.com
X-ARR-SSL: 2048|256|C=US, S=Washington, L=Redmond, O=Microsoft Corporation, OU=Microsoft IT, CN=Microsoft IT TLS CA 5|CN=*.azurewebsites.net
X-AppService-Proto: https
X-Forwarded-TlsVersion: 1.2

我還需要告訴我的后端應用程序使用轉發的標頭(在我的情況下,X-ORIGINAL-HOST 似乎是唯一包含實際請求主機的標頭)? 這似乎是一個非常直接的用例。 在此先感謝您的幫助。

在主機名設置下的 HTTP 設置中,提及 *.domain.com。 如果您進行了更改,請確保您已使用自定義域配置后端。

問候, 姆斯里尼

我剛遇到這個。 確保在您的選項配置中包含XForwardedHost ,或者只包含ForwardedHeaders.All像這樣:

services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.All;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM