2014-01-06 7 views
2

Здравствуйте, я прочитал и внедренные этих Витторио Bertocci учебники:Реализация Azure аутентификация Active Directory в клиенте Owin Web Application

"Secure ASP.NET Web API with Windows Azure AD and Microsoft OWIN Components"

"Protecting a Self-Hosted API with Microsoft.Owin.Security.ActiveDirectory"

Однако в отличии от учебников моего веба-приложение состоит из следующие компоненты OWIN: NancyFx & ASP.NET Web API (в соответствии с шаблоном архитектуры here). Когда я пытаюсь реализовать аутентификацию AAD (как это делает г-н Берточчи в своих учебниках) в моем модуле NancyFx ле (для проверки подлинности пользователя, который попадет на требующие аутентификации маршрута):

Я получаю следующую ошибку

Дополнительной информации: Загрузку сборки, необходимую для интерактивной аутентификации пользователя не удались. Убедитесь, что существует сборка «Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35».

Очевидно, что диалоговое окно AAD, запрашивающее у пользователя логин, зависит от WindowsForms и не должно вызываться из веб-приложения.

Какое должно быть разрешение учетной записи AAD вместо этого? Как реализовать AAD-аутентификацию в клиенте веб-приложения?

ответ

5

Мое понимание сценария вы пытаетесь реализовать то, что у вас есть следующие актеры:

Browser -> Веб-приложение -> Web API

Где браузер проверяет подлинность пользователя в веб-приложении а затем веб-приложение пытается получить токен, который позволит ему получить доступ к ресурсу в веб-API от имени пользователя.

В этом случае вашему веб-приложению необходимо перенаправить браузер в конечную точку авторизации AAD OAuth 2.0. Там пользователь вводит свои учетные данные и перенаправляется обратно в веб-приложение с кодом авторизации. Затем вы можете использовать этот код авторизации для получения токена через Active Directory Authentication Library (ADAL). В частности, вы будете использовать метод AuthenticationContext.AcquireTokenByAuthorizationCode. Следующая запись в блоге от Vittorio дает более подробную информацию о коде, который вам потребуется реализовать в веб-приложении, чтобы получить токен. Это не специфическая реализация OWIN, но ее легко перевести в ваше приложение NancyFx.

Using ADAL’s AcquireTokenByAuthorizationCode to Call a Web API From a Web App

Вы не должны изменить ASP.NET Web API, которые вы реализованы на "Protecting a Self-Hosted API with Microsoft.Owin.Security.ActiveDirectory"

версии AuthenticationContext.AcquireToken, который используется в примере приложения клиента в записи в блоге Protecting a Hosted API... является предназначенный для другого сценария, в котором не задействован браузер. Вместо этого пользователь взаимодействует с настольным приложением, которое затем вызывает веб-API для имени пользователя. В этом случае вызов AcquireToken должен отображать диалоговое окно на основе браузера, чтобы разрешить пользователю входить в систему и получать соответствующий токен.

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