2014-01-06 6 views
2

안녕하세요 읽고 구현이 비토리오 Bertocci 자습서 : "Protecting a Self-Hosted API with Microsoft.Owin.Security.ActiveDirectory"구현 푸른 Active Directory 인증

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

그러나 튜토리얼과는 달리 내 웹 응용 프로그램이 구성되어 있습니다 NancyFx & ASP.NET 웹 API (아키텍쳐 패턴을 here에 따라) Bardocci 씨가 자습서에서했던대로 AAD 인증을 구현하려고 시도하면서 NancyFx 모듈로

나는 다음과 같은 오류를

추가 정보를 얻을 : 실패 대화 형 사용자 인증에 필요한 어셈블리를로드 제작 : (경로 요구하는 인증을 명중 사용자를 인증하기 위해). 'Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'어셈블리가 있는지 확인하십시오.

분명히 사용자에게 로그인하도록 요청하는 AAD 대화 상자에는 WindowsForms에 대한 의존성이 있으므로 웹 응용 프로그램에서 호출해서는 안됩니다.

대신 어떤 AAD 자격 증명 프롬프트를 사용해야합니까? 웹 앱 클라이언트에 AAD 인증을 구현하는 방법은 무엇입니까?

답변

5
당신이 구현하려는 시나리오의 나의 이해는 다음과 같은 배우가 있다는 것입니다

:

브라우저 -> 웹 응용 프로그램 -> 웹 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

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

Protecting a Hosted API... 블로그 항목에서 클라이언트 응용 프로그램 예제에 사용 AuthenticationContext.AcquireToken의 버전에 따라 구현 ASP.NET 웹 API를 변경할 필요가 없습니다 것입니다 브라우저가 관련되지 않은 다른 시나리오 용입니다. 대신 사용자는 사용자 대신 웹 API를 호출하는 데스크톱 응용 프로그램과 상호 작용합니다. 이 경우 AcquireToken 호출은 사용자가 로그인하여 적절한 토큰을 얻을 수 있도록 브라우저 기반 대화 상자를 표시해야합니다.