Как проверить токен доступа OpenID Connect, сгенерированный Azure AD v2 в основном веб-API ASP.NET? - PullRequest
0 голосов
/ 30 октября 2019

Как проверить токен доступа OpenID Connect, сгенерированный Azure AD (v2 !!!) в ASP.NET core WEB API?

Сценарий:

У меня Angular 8 ClientПриложение, которое получает токен доступа OpenID Connect после входа в систему. Клиент может вызвать API вместе с токеном доступа. Но вопрос в том, как мне проверить этот токен в основном API ASP.NET?

С этим кодом я получаю ошибку авторизации без каких-либо описаний.

  services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
             .AddAzureADBearer(options => Configuration.Bind("AzureAd", options));

        services.AddCors(options =>
        {
            options.AddDefaultPolicy(
                builder =>
                {
                    builder.AllowAnyOrigin();
                    builder.AllowAnyMethod();
                    builder.AllowAnyOrigin();
                    builder.AllowAnyHeader();
                });
        });

Microsoft.AspNetCore.Authorization. DefaultAuthorizationService: Информация: авторизация не удалась. Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker: Информация: авторизация не выполнена для запроса в фильтре «Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter». Microsoft.AspNetCore.Mvc.ChallengeResult: Информация: Выполнение ChallengeResult со схемами аутентификации (). Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: Информация: Схема аутентификации: AzureADJwtBearer был вызван.

"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "localhost",
"TenantId": "myTenantId",
"ClientId": "myClientId"

},

1 Ответ

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

Domain не localhost. Указывать TenantId необходимо только в том случае, если вы хотите принимать токены доступа от одного арендатора. В противном случае вы можете оставить для них значение common:

This value can be:
- A GUID (Tenant ID = Directory ID)
- 'common' (any organization and personal accounts)
- 'organizations' (any organization)
- 'consumers' (Microsoft personal accounts)

. Необходимо также использовать конечную точку платформы идентификации Microsoft (конечную точку Azure AD V2.0), добавив этот код в файл Startup.cs. :

services.Configure<JwtBearerOptions>(AzureADDefaults.JwtBearerAuthenticationScheme, options =>
{
    // This is a Microsoft identity platform web API.
    options.Authority += "/v2.0";

    .....
});

Вы можете нажать здесь для подробного объяснения и примера кода.

...