2010-08-17 3 views
3

PrincipalContext WCF 서비스 뒤에있는 코드로 작업하십시오. '통과 (pass-through)'유형 인증을 허용하기 위해 WCF 서비스가 가장하고 있습니다.System.DirectoryServices.AccountManagement.PrincipalContext 및 WCF 서비스의 가장

Active Directory (대부분 System.DirectoryServices.Protocols 네임 스페이스)로 수행하는 작업은이 시나리오에서 제대로 작동하지만 System.DirectoryServices.AccountManagement의 클래스가 적합합니다. 내가 FindByIdentity에 전화를 걸 때

PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName); 
UserPrincipal user = 
    UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, UserName); 

가, 내가 COMException을 얻을 : 실패 샘플 코드 "는 작업 오류가 발생했습니다." PrincipalContext 호출은 또한 예컨대, 실패 :

string server = context.ConnectedServer; 
모두 OperationContext.Current.ServiceSecurityContext

Thread.CurrentPrincipal.Identity가 가장가 제대로 작동 보여줍니다. 그리고 제가 말했듯이, S.DS.P의 다른 AD 작업은 정상적으로 작동합니다.

명시 적으로 자격 증명을 PrincipalContext에 설정하면 모든 것이 작동합니다. 예 :

PrincipalContext context = 
    new PrincipalContext(ContextType.Domain, domainName, user, password); 
UserPrincipal user = 
    UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, UserName); 

이제 모든 것이 작동합니다. 하지만 발신자의 사용자 이름과 암호를 알 수 없습니다. 나는 가장에 의지해야합니다.

내가보기에 어떤 문제가 발생했는지에 대한 아이디어가 있습니까?

미리 감사드립니다. James

답변

1

앱 풀에 대해 spn이 설정되고 위임이 AD에 설정되고 앱 풀 계정이 os 권한의 일부로 작동하는지 확인합니다.

+0

나는 앱 풀에 대한 spn의 의미를 잘 모르겠습니다. 나는 spn이 무엇인지 확실하지 않은이 서비스 전용의 응용 프로그램 풀을 사용하고 있습니다. 위임을 위해 광고에서 무엇을 설정해야합니까? 마지막 부분을 확인하겠습니다. –

+0

spn = 서비스 사용자 이름 – ecounysis