Почему я получаю сообщение об ошибке AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения? - PullRequest
0 голосов
/ 08 октября 2019

Я знаю, что этот вопрос уже задавался, но ничего из того, что я прочитал, похоже, не решило проблему. Мое приложение ASP.NET Core получает следующее сообщение об ошибке при попытке его запустить.

AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения

Я настроил свою аутентификацию, используя руководство, данное мне порталом Azure. Я покажу вам, что у меня есть.

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options => {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
    services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => Configuration.Bind("AzureAd", options));

    services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
    {
        options.Authority = options.Authority + "/v2.0/";
        options.TokenValidationParameters.ValidateIssuer = false;
    });
    services.AddAuthorization(options =>
    {
        options.AddPolicy("NorwayTeam", policyBuilder => policyBuilder.RequireClaim("groups", "111-222-333-444-555"));
    });            

    //MVC
    services.AddMvc(options => {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        options.Filters.Add(new AuthorizeFilter(policy));
        }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

    ...[shortened for brevity]
}

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.UseSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
        routes.MapHub<VesselHub>("/vesselHub");
        routes.MapHub<RequirementHub>("/requirementHub");
    });
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

Я также поместил соответствующий код в свой appsettings.json

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "MyCompany.onmicrosoft.com",
    "TenantId": "xxx",
    "ClientId": "xxx",
    "CallbackPath": "/signin-oidc"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

Итак, с точки зрения приложения, приведенный выше код - это все, что необходимо для подключения к регистрации моего приложения. Очевидно, я поместил [Authorize] в соответствующих контроллерах.

Следующим шагом будет настройка регистрации приложения на моем портале Azure. Я изменил настройки регистрации моего приложения следующим образом: размытые области используют URL-адрес моего веб-приложения, равный https://MyCompany.azurewebsites.net/. Так как это моя производственная версия моего приложения, я не хочу использовать localhost.

App Registration Settings

Часть меня думает, что проблема может бытьсвязано с мошенническим объявлением localhost, но я не могу быть уверен, так как не вижу, какой запрос делается приложением для регистрации приложения. Кто-нибудь знает, что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Мне удалось решить эту проблему. Во время настройки всего этого я не осознавал, что одна регистрация приложения в Azure может иметь много обратных URL-адресов как для localhost, так и для вашей production среды.

Чтобы это приложение работалои, преодолев ошибку, я просто добавил дополнительный URL-адрес, установленный для регистрации приложения, для production и staging, что дало мне возможность аутентифицироваться на всех направлениях. Пожалуйста см. Ниже.

App Registration Return URLs

0 голосов
/ 09 октября 2019

Очень легко найти эту проблему, когда вы получаете доступ к URL-адресу вашего приложения (https://MyCompany.azurewebsites.net/), вы будете перенаправлены на страницу входа.

enter image description here

Расшифровав URL-адрес запроса на авторизацию, вы найдете redirect_uri.

Это что-то вроде

https://login.microsoftonline.com/XXX/oauth2/authorize?client_id=XXX&redirect_uri=http://localhost:59775/signin-oidc&response_type=id_token&scope=openid profile

Скопируйте значение redirect_uri и вставьте его на портал Azure, затем повторите попытку.

...