Схемы вызова и аутентификации не найдены для Azure Аутентификация AD с приложением do tnet Core Web MVC - PullRequest
0 голосов
/ 11 марта 2020

Я создаю ASP. NET Core 3.1 MVC веб-приложение и пытаюсь настроить аутентификацию Azure AD (на моем Ma c с использованием Visual Studio для Ma c). Я полагаю, что сделал все необходимое для настройки аутентификации AD в Startup.cs:

services.AddAuthentication(o =>
            {
                o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                o.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
                o.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
            })
                .AddAzureAD(options => Configuration.Bind("AzureAd", options))
                .AddCookie();

Я использую промежуточное ПО:

app.UseAuthorization();
app.UseAuthentication();

Когда приложение появляется в chrome браузер, я получил следующую ошибку:

Произошло необработанное исключение при обработке запроса.

InvalidOperationException: не была указана схема authenticationScheme, и не было DefaultChallengeScheme найден. Схемы по умолчанию могут быть установлены с помощью AddAuthentication (строка defaultScheme) или AddAuthentication (Action configureOptions).

Мой код показывает настройки обоих authenticationScheme и DefaultChallengeScheme, но не уверен, почему он не может найти эти две схемы. кто-нибудь знает?

Версии Nuget:

Microsoft.AspNetCore.Authentication (2.2.0)

Microsoft.AspNetCore.Authentication.AzureAD.UI ( 3.1.2)

Microsoft.AspNetCore.Authentication.OpenIdConnect (3.1.2)

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Поскольку вы используете Проверка подлинности OpenID Connect (OID C) , поэтому вызовите метод AddOpenIdConnect в методе ConfigureServices:

services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    options.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
    options.Authority = "https://login.microsoftonline.com/your_tenantId";
    options.ClientId = "your_clientId";
 });

И настройки приложений. json:

"AzureAd": {
    "Domain": "xxx.onmicrosoft.com",
    "Instance": "https://login.microsoftonline.com/",
    "ClientId": "xxxxxxxxxxxxxxxx",
    "TenantId": "xxxxxxxxxxxxxxxx",
    "CallbackPath": "/signin-oidc"
}

В зарегистрированном приложении Azure установите URL-адрес перенаправления с помощью /signin-oidc.

enter image description here

1 голос
/ 11 марта 2020

Вы можете изменить свои коды на:

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

AzureADDefaults.AuthenticationScheme будет использоваться по умолчанию, когда указанная схема c не запрашивается.

Также измените порядок промежуточного программного обеспечения :

app.UseAuthentication();
app.UseAuthorization();

Чтобы убедиться, что промежуточное ПО аутентификации срабатывает перед промежуточным ПО авторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...