2011-09-04 3 views
7

IIS7에서 WCF 웹 서비스 응용 프로그램을 만들고 테스트했습니다. 인증에 관해서는 웹 서비스 작업에 액세스하는 소비자를 위해 SQL Server가 호스팅하는 userd id 및 password 인증을 구현하려고했습니다. 그러나 회사 정책에 SAML을 웹 서비스에 구현하도록 지시했다고 들었습니다. 즉, 웹 서비스 작업에 액세스하는 모든 클라이언트는 SAML 2.0을 사용하여 인증되어야합니다. SAML에 익숙하지 않지만 내 웹 서비스 내에서 구현하는 방법을 알고 시작하고 싶습니다. 웹 서비스에 대한 정의에 따라 서비스 제공자와 ID 제공자라는 두 가지 용어를 계속 들었습니다. 서비스 제공자가 내 웹 서비스라고 가정합니다. ID 공급자는 사용자가 인증하는 곳이며 ID 공급자는 내 웹 서비스에 어설 션을 제공하고 클라이언트가 작업에 액세스하게합니다. 나는 이론을 이해하지만 실용적인 구현 방법을 모릅니다. 내 웹 서비스에 액세스하는 클라이언트는 내부적이지 않습니다. 즉, 외부 (엑스트라 넷 클라이언트)이므로이 경우 ID 제공자는 무엇이며 웹 서비스에 코드를 추가하여 서비스 공급자로 만들려면 어떻게해야합니까?SAML 인증을 WCF 웹 서비스 응용 프로그램에 통합하는 방법

내 딜레마를 이해해 주시고 누구나 내가 취해야 할 접근법을 설명해 주시고 웹 서비스를 완성하는 데 도움이되는 샘플 또는 자습서를 제공해 주시면 대단히 감사하겠습니다.

답변

4

SAML 2.0은 표준 WCF에서 제공하지 않는다고 생각합니다. 이 기능을 사용하려면 WCF와 WIF (Windows ID 기반)을 결합해야합니다. 여기에는 WIF 및 사용 권한 기반 사용 권한이있는 very complex example 사용 WCF가 있습니다. 이 예제에서는 SAML 1.1을 사용하지만 SAML 2.0에서 작동하도록 구성을 변경하기 만합니다.

사용자는 일반적으로 사용자가 STS (서비스 토큰 서비스)에 대해 인증하고 보안 토큰 (예 : SAML 토큰 등)을 수신하는 페더레이션 인증 또는 페더레이션 ID라고합니다. 클라이언트가 보안 토큰을 전달하는 실제 서비스 (RP - 릴레이 파티)를 호출합니다. 그래서 무엇을 세울 계획입니까? 회사 정책에서 SAML 사용을 요구할 경우 STS가있을 가능성이 높으며이 기사에서 언급 한대로 SAML 토큰을 사용하여 클라이언트를 인증하면됩니다.

+0

귀하는 정확합니다. STS가 있습니다. 따라서 saml 토큰을 사용하여 클라이언트를 인증하려면 이동 경로를 제공 한 예가 무엇입니까? – wcfvemi

2

2011 년부터 Claim-Aware WCF Services에 대한 지원은 .NET 4.5의 출시로 apparently improved입니다. 나는 이제까지 변경하는 경우에 그 기사에서 정보를 복사 할 수 있습니다,하지만이 답변의 시간으로, 과정은 간단 것으로 나타나

  1. 이 WCF에서 WIF에 대한 참조 (Microsoft.IdentityModel.dll를) 추가 봉사 프로젝트. .NET 4.5와 함께 제공되기 때문에 NuGet 패키지가 필요하다고 생각하지 않습니다.

  2. 는 자체 호스팅 클레임 인식 서비스를 만들려면 다음 코드 샘플을 사용

    VAR 호스트 = 새 ServiceHost를 (대해서 typeof (ClaimsAwareWebService), 새로운 열린 우리당 ("myUri을")); FederatedServiceCredentials.ConfigureServiceHost (host);

    host.Open();

  3. federatedServiceHostConfiguration 행동 확장을 사용하도록 WCF 서비스를 설정하십시오.

관련 문제