Я настраиваю проверку подлинности с помощью Azure Active Directory с помощью службы веб-приложений ASP.NET Core 2.2, которая развернута в фабрике служб Azure. Я настроил его с помощью шаблона в Visual Studio, и он хорошо работает при локальном развертывании. Однако, когда я развернул его на Azure, я получаю сообщение об ошибке «AADSTS50011: URL-адрес ответа, указанный в запросе, не совпадает с URL-адресами ответа, настроенными для приложения», и я заметил, что в URL-адресе в нем указан сгенерированный URI перенаправления как https://IP.ADDRESS:PORT # / РСИН-входа в аккаунт . Если я добавлю этот IP-адрес в мою регистрацию приложения, это не выдаст мне ошибку, но перенаправление меня на этот адрес фактически никуда меня не приведет. Что я могу сделать, чтобы это исправить?
Я подумал, что это может быть проблема с обратным прокси-сервером, и я попытался исправить ситуацию, чтобы попытаться дать мне абсолютный путь к моей службе в кластере, например: https://mycluster.azure -api.net / myapplication / myservice / signin- oidc но ничего из этого не сработало
Также свойство CallbackPath должно начинаться с "/", поэтому я не могу просто добавить туда полный адрес, оно выдает ошибку.
Часть моего кода в файле startup.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}");
});
}