2012-07-03 2 views
0

많은 아키텍처 응용 프로그램에서 소비되는 핵심 WCF 서비스를 보호하기 위해 일부 아키텍처 요소를 감싸는 데 어려움을 겪고 있습니다.여러 프로젝트에서 WCF 서비스 보안 설정

내부적으로 HR 담당자가 페론의 세부 정보를 업데이트 할 수있는 응용 프로그램이 있습니다. 이것은 WPF 응용 프로그램에 포함되어 있습니다. 외부에서는 개별 사용자가 인증 (AD 회원 공급자 제외)하고 세부 정보를 업데이트 할 수있는 웹 사이트가 있습니다.

사용자가 다른 사용자의 정보를 볼 수 없도록하려는 것은 분명한 이유입니다. 그러나 우리는 사용자가 로그인하는 동일한 웹 응용 프로그램 내에서이 서비스를 호스팅하고 싶지 않습니다. 여기 아키텍처는 시각적 인 스튜디오의 관점에서 어떻게 보일지입니다 :

ServiceApplication

MVCWebApplication

그들은 같은 도메인 내에서 존재하지 않는 WpfApplication는, 예를 들어, 서비스 응용 프로그램이 될 것이다 http://www.service1.com/Service.svc에서 호스팅되며 mvc 응용 프로그램은 http://www.updateyourprofile.com에 호스팅됩니다. 따라서 사용자가 http://www.updateyourprofile.com에 로그인하면 JSON을 통해 Wcf 서비스를 사용하고 싶습니다. 서비스 응용 프로그램, wpf 응용 프로그램 및 mvc 웹 응용 프로그램은 모두 AD 자격 증명을 사용하여 인증합니다. 그러나 mvc 웹 응용 프로그램에 로그인하는 사용자가 자신의 정보 만 볼 수 있도록 서비스를 보호하려면 어떻게해야합니까?

대부분의 예제에서는 서비스 내부에서 HttpContext.Current.User 검사를 사용하는 것으로 나타났습니다. 그러나 사용자가 다른 사이트에서 인증 한 이후 쿠키가 어떻게 전송됩니까? 쿠키가 투명하게 이동하도록 소비하려는 동일한 웹 응용 프로그램 내에 서비스를 게시해야합니까?

또는 동일한 인증 저장소를 사용하여 서비스에 액세스 할 수있는 사용자를 결정하는 서로 다른 응용 프로그램과 함께 중앙 집중식으로 위치한 서비스를 가질 수 없습니까?

답변

0

당신이 찾고있는 것은 모든 진입 점에서 사용되는 일종의 연합 인증 시스템입니다. 이것이 Windows Identity Foundation이 구축하는 데 도움이되는 것입니다.

인증 시스템에서 발급 한 각 사용자의 보안 토큰에 포함 된 클레임에 따라 각 응용 프로그램 내에서 액세스 제어가 클레임 기반입니다.

There's an entire book on the subject on MSDN.