2

Для контекста, я OpenIdConnect с ASP.NET 4 Web App, работающим с использованием Owin (и много помощи Modern Authentication with Azure Active Directory for Web Applications.HTTP 500 с помощью OAuthAuthentication с Azure Active Directory для обеспечения ASP.NET Web API 5

I теперь хочу обеспечить отдельный проект ASP.NET 5 Web API (который будет размещен у одного и того же арендатора AD в Azure в качестве микросервиса). Я начал с простого ASP.NET 5 WebApi, сгенерированного в Visual Studio, и добавил следующее в Configure в Startup.cs (в начале трубопровода):

app.UseOAuthAuthentication(new OAuthOptions() 
{ 
    ClientId = "71d33a1c-505c-4815-a790-8494dd2bb430", 
    ClientSecret = "LajQFbf1/Nyt/6zCP5vE5YWj5VC4aNaC3i/SRtEj2sI=", 
    TokenEndpoint = "https://login.microsoftonline.com/7058f4f0-619f-4c16-ac31-9e209d70ff23/oauth2/token", 
    AuthorizationEndpoint = "https://login.microsoftonline.com/7058f4f0-619f-4c16-ac31-9e209d70ff23/oauth2/authorize", 
    AuthenticationScheme = "OAuth2Bearer", 
    CallbackPath = "/api/values" 
}); 

Это дает мне ошибку, указывающую SignInScheme должен быть р rovided, но я не понимаю, что это должно быть. Если я добавлю строку, скажем «OAuth2Bearer», я получаю еще больше, но все равно получаю 500 запросов на запрос, но исключение не было вызвано в приложении API, а также точка останова в первой строке в реализации контроллера API Получить удар.

Что мне не хватает? В идеале, я хочу, чтобы затем расширить события OAuthOptions, чтобы добавить пользовательскую заявку, аналогичную тому, что я сделал с OpenIdConnect и уведомлением SecurityTokenValidated.

+0

Вы, разумеется, использовали секретный секрет или закрыли его прямо сейчас? – blowdart

+0

Да, это тост ... хотя оставляя его открытым, чтобы побудить людей решить мою проблему –

ответ

2

Базовое промежуточное ПО OAuth2 не может использоваться для проверки маркеров, поскольку это промежуточное программное обеспечение клиента OAuth2, предназначенное для обработки интерактивных потоков, таких как поток кода авторизации. Все существующие социальные провайдеры OAuth2 (например, Facebook или Google) наследуют от этого промежуточного программного обеспечения.

Вы на самом деле ищет однонаправленного промежуточного JWT:

app.UseJwtBearerAuthentication(options => { 
    options.AutomaticAuthenticate = true; 
    options.AutomaticChallenge = true; 

    options.Authority = "[address of your OIDC server]"; 
    options.Audience = "[audience of the access tokens issued by the OIDC server]"; 
}); 

Чтобы узнать больше о различных OAuth2/РСИН промежуточного слоя в ASP.NET Ядра, не пропустите эту другую SO сообщение: Configure the authorization server endpoint.

Смежные вопросы