Использование токена Microsoft Graph для защиты ASP.NET Core Web API с токенами Jwt Bearer - PullRequest
3 голосов
/ 02 апреля 2019

У нас есть ASP.NET Core Web API, который я хочу защитить с помощью токена Microsoft Graph Access. График токен действителен, и я могу сделать вызов графа, он работает нормально.

Однако, если я пытаюсь получить доступ к ASP.NET Core Web API, который настроен для аутентификации JWT Bearer, выдается следующая ошибка.

Ошибка канала-носителя = "invalid_token", error_description = "Ключ подписи не был найден

Мне не хватает некоторых конфигураций для настройки или это проблема с токеном графа? Вот как настроена аутентификация.

        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
               .AddJwtBearer(options =>
               {
                   options.TokenValidationParameters = new TokenValidationParameters()
                   {
                       ValidateIssuer = false, // For multi tenant
                       ValidateIssuerSigningKey = false,
                       ValidateAudience = false // This is for testing
                   };
               });

Те же конфигурации отлично работают с токеном доступа Azure AD.

1 Ответ

2 голосов
/ 02 апреля 2019

У нас есть ASP.NET Core Web API, который я хочу защитить с помощью Microsoft Graph Access toke

Нет, я предлагаю зарегистрировать ваш веб-API какресурс, который защищен Azure AD.

Токен API Microsoft Graph используется для доступа к Microsoft Graph. Серверная сторона Microsoft Graph будет проверять утверждения / подписи после получения токена JWT.Кроме того, я помню, что токены доступа Microsoft Graph API подписаны не так, как токены JWT, выпущенные AAD.Поэтому позвольте серверной стороне Microsoft Graph API проверять токен, и токен не должен использоваться для защиты другого API.

Ваше клиентское приложение может использовать промежуточное программное обеспечение OpenID Connect и библиотеку аутентификации Active Directory (ADAL.NET) дляполучить токен-носитель JWT для вошедшего в систему пользователя с использованием протокола OAuth 2.0.Токен-носитель передается в веб-API, который проверяет токен и авторизует пользователя с помощью промежуточного программного обеспечения для аутентификации канала-носителя JWT:

Вызов веб-API в веб-приложении ASP.NET Core с использованием Azure AD

...