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