2011-02-04 5 views
7

SilverLight 및 WPF 클라이언트 인터페이스를 모두 대상으로하는 응용 프로그램에 대한 WCF 인증을 처리하기위한 조언을 찾고 있습니다.SilverLight 4 및 WPF 응용 프로그램 모두에 대해 WCF 인증을 처리하는 방법

편집 : 실제로 인증 모드에는 사용자 이름/비밀번호 조합이 필요합니다.

또한 향후에 응용 프로그램은 전체 응용 프로그램 내에서 동일한 컴퓨터의 전체 독립 실행 형 모드 (클라이언트 (WPF)와 서버 모두)에서 작동 할 수 있어야합니다. 그렇다면 WCF를 사용하지 않아야합니까?

EDIT : 또 다른 추가로 향후 응용 프로그램은 게임처럼 로컬 네트워크 클라이언트 - 서버 모드 (IIS없이)에서 작동 할 수 있어야합니다. 그래서 내가 WCF를 사용하지 않아야합니까? 아니면 다른 옵션?

+0

나는 비슷한 것을 필요로하고 다른 내장 옵션을 검토 한 후에 MessageInspector http://msdn.microsoft.com/en-us/library/aa717047.aspx를 사용하기로 결정했다. 이것을 사용하여 클라이언트 및 서비스 구현 로직 외부의 헤더에 데이터를 삽입 할 수있었습니다. – Michael

답변

1

당신은 UserNamePasswordValidator에서 상속과 같이 당신의 행동 구성에서 customUserNamePasswordValidatorType을 설정하여 자신 만의 검증을 구현할 수 있습니다 서비스의 사용자 이름/암호 속성.

0

AuthenticationService를 사용하여이 솔루션을 확인하십시오. 나는 그것을 좋아하고 트라이 플랫폼 응용 프로그램 (웹/SL/WPF)

http://msdn.microsoft.com/en-us/library/system.web.applicationservices.authenticationservice.aspx

이 샘플 구현에 대한 링크를 따라 그것을 사용하기로 결정했다.

이렇게하면 기존 사용자 지정 ASP .NET MembershipProvider 구현 (독립 실행 형 클라이언트에서도)을 사용할 수 있습니다.

+0

이미 AuthenticationService를 살펴 봤지만 질문에 설명 된대로 내 응용 프로그램의 "future"버전에서 사용할 수 있습니까? –

+0

고전적인 연결이 끊긴 데스크톱 응용 프로그램에서 ASP .NET MembershipProvider를 사용할 수 있습니다. – Jeff

+0

HttpContext없이 ASP.NET MembershipProvider를 사용하는 방법? 독립 실행 형 WPF 응용 프로그램과 유사합니다. –

0

IIS는 WCF 서비스를 호스팅하는 데 필요하지 않습니다. 다양한 호스팅 옵션에 대해이 link을 살펴보십시오. 또한 WCF는 다양한 프로토콜을 통한 통신을 허용합니다. 운영 플랫폼 및 통신 프로토콜을 기반으로하는 호스팅 옵션 요약은 link을 참조하십시오.

0

WCF 서비스의 인증에 사용할 수있는 몇 가지 기술 (X509 인증서, 토큰, 사용자 이름/암호 창문이 인증. Selecting 올바른 자격 증명 유형은 당신이 & 실버 사용하고 있기 때문에 (가정. 중요

있습니다 WPF는) 설정이 Windows 환경 내에 있는지 당신은 Windows 인증을 사용할 수 있습니다. To 인증 단계를 강조 따라 IIS에 서비스를 호스팅 창을 활성화합니다.

희망이 도움이 행운을 빕니다!

0

WCF를 사용하면 네트워크 나 외부 세계에 서비스를 노출하려는 경우 코드를 변경하지 않고도 일부 추가 구성을 변경/추가 할 수 있습니다.

따라서 클라이언트와 서버를 하나의 시스템 또는 네트워크에 둘 수있는 시나리오는 절대적으로 좋으며 쉬운 방법은 동일한 서비스에 대한 요구 사항을 다루는 2 개의 엔드 포인트를 노출시키는 것입니다.

하나의 엔드 포인트로도 이동할 수 있지만 바인딩 메커니즘이 다른 다른 엔드 포인트를 사용하면 인증 중에 오버 헤드가 줄어 듭니다. 예 : 같은 컴퓨터에있을 때 net : pipe 또는 net : tcp binding을 사용할 수 있습니다. 도메인 내에있을 때 net : tcp 또는 httpbinding을 사용할 수 있습니다.

다른 바인딩을 사용하면 성능이 달라집니다.당신이 ClientCredentials.UserName에 사용자 이름/암호 조합을 설정할 수 있습니다 클라이언트 측에

<behaviors> 
      <serviceBehaviors> 
       <behavior name=""> 
        <serviceMetadata httpGetEnabled="true" /> 
        <serviceCredentials> 
         <userNameAuthentication userNamePasswordValidationMode="Custom" 
               customUserNamePasswordValidatorType="MyNamespace.MyValidator, MyNamespace" /> 
        </serviceCredentials> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 

:

관련 문제