.Net Core 2.2 Сгенерированная аутентификация AzureAD - InvalidOperationException: Нет аутентификацииScheme и нет DefaultChallengeScheme? - PullRequest
0 голосов
/ 18 февраля 2019

Я знаю, что есть довольно много вопросов и ответов по этой общей теме, но в .Net Core 2.2 требуемый / генерируемый код отличается.

Если вы создаете новый проект .Net Core 2.2 в VisualStudioс помощью аутентификации домена, используя AzureAD, вы получите очень легкий проект, который выполняет аутентификацию правильно.В файле Startup.cs вы найдете приведенный ниже код, который включает аутентификацию AzureAD в этом домене, а затем вы соответственно используете атрибут [Authorize].Проблема в том, что если вы попытаетесь использовать его в другом проекте .Net Core 2.2.

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

            services.AddMvc(options =>
            {
                var policy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser()
                    .Build();
                options.Filters.Add(new AuthorizeFilter(policy));
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Я скопировал это вместе с соответствующими настройками в проект .Net Core 2.2, который я уже создал.Это не такой легкий проект, но не обширный и довольно простой.Я получаю ошибку выше, InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found

Итак, я прошу понять, как это возможно?Как сгенерированный в Visual Studio проект .Net Core 2.2 работает только с этим кодом, а другой - нет?

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете попробовать добавить следующее:

services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = AzureADDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = AzureADDefaults.AuthenticationScheme;
            }).AddAzureAD 

и т. Д. *

Вы можете выбрать схемы в своем атрибуте Authorize:

[Authorize(AuthenticationSchemes = AzureADDefaults.AuthenticationScheme)]
...