Сгенерированный AAD CallbackUrl является IP-адресом и не соответствует URL-адресу ответа при регистрации приложения при развертывании в сервисной структуре - PullRequest
1 голос
/ 10 июля 2019

Я настраиваю проверку подлинности с помощью 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}");
            });
        }

1 Ответ

0 голосов
/ 16 июля 2019

Ссылка, предоставленная LoekD, должна быть вам полезна.

Вам просто нужно, чтобы ответный URL в вашем коде совпадал с тем, что вы указали при регистрации приложения. Если он работает локально, но не работает с опубликованным приложением, это означает, что у вас все еще есть ссылки на локальный URL-адрес. Вам необходимо использовать опубликованный URL-адрес приложения как в коде, так и на портале (myapp.azurewebsites.net).

...