生成的 AAD 回调 URL 是一个 IP 地址,在部署到服务构造时,与应用注册中的回复 URL 不匹配



我正在使用部署到Azure Service Fabric的 ASP.NET Core 2.2 Web应用服务来设置身份验证。我使用可视化工作室中的模板设置了它,它在本地部署时运行良好。但是,当我将其部署到 azure 时,我收到"AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配"错误,我注意到在 URL 中它将生成的重定向 URI 列为 https://IP。地址:端口#/登录-OIDC。如果我在我的应用程序注册中添加此 IP 地址,它不会给我错误,但将我重定向到该地址实际上并没有带我去任何地方。我该怎么做才能解决这个问题?

我认为这可能是一些反向代理问题,我尝试了一些修复程序,试图为我提供群集上服务的绝对路径,例如: https://mycluster.azure-api.net/myapplication/myservice/signin-oidc 但这些都不起作用

此外,CallbackPath 属性需要以"/"开头,所以我也不能在那里添加完整的地址,它会引发错误。

我在初创公司.cs中的一些代码,其中很多是自动生成的:

public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => BindAad(options))
.AddCookie();
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
private void BindAad(AzureADOptions options)
{
options.Instance = settings.GetSetting("AadInstance");
options.Domain = settings.GetSetting("AadDomain");
options.TenantId = settings.GetSetting("AadTenantId");
options.ClientId = settings.GetSetting("AadClientId");
options.CallbackPath = new PathString("/signin-oidc");
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
}

LoekD 提供的链接应该对您有用。

只需使代码中的回复 URL 与应用注册中的回复 URL 匹配即可。如果它在本地工作,但不适用于您发布的应用程序,则意味着您仍然在某处引用本地 url。需要在代码和门户 (myapp.azurewebsites.net) 中使用已发布的应用程序 URL。

最新更新