2010-05-25 3 views
6

사용자가 System.DirectoryServices.AccountManagment를 사용하여 지정된 그룹의 구성원인지 여부를 확인하려고합니다.System.DirectoryServices.AccountManagement를 사용할 때 DirectoryServicesCOMException이 발생했습니다.

  • 64 비트 시스템의 SharePoint 2007에서는 SharePoint WebPart에서이 작업을 수행합니다.
  • 프로젝트 대상 .NET 3.5
  • 가장이 web.config에서 사용됩니다.
  • 문제의 IIS 사이트는 도메인 사용자가 ID로 구성된 IIS 응용 프로그램 풀을 사용하고 있습니다. 내가 인스턴스화 할 수 있어요

PrincipalContext 같은 :

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain)) 
{ 
    GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "MYDOMAIN\somegroup"); 
    // snip: exception thrown by line above. 
} 

사용자 SAM과 함께 위 UserPrincipal.FindByIdentity 모두 :

PrincipalContext pc = new PrincipalContext(ContextType.Domain)

다음, 나는 주체를 잡아보십시오 DirectoryServicesCOMException : "로그온 실패 : 알 수없는 사용자 이름 또는 잘못된 암호"

전체 SAMAccountName을 FindByIdentity (MYDOMAIN \ username 형식) 또는 동작이 변경되지 않은 사용자 이름으로 전달하려고 시도했습니다. HostingEnvironment.ImpersonateSPSecurity.RunWithElevatedPrivileges 접근 방식을 사용하는 다른 자격 증명을 사용하여 코드를 실행 해보고 동일한 결과를 경험했습니다.

나는 또한 장소에 도메인 이름으로 내 컨텍스트를 인스턴스화 시도했습니다

: Principal Context pc = new PrincipalContext(ContextType.Domain, "MYDOMAIN");

PrincipalServerDownException 던졌습니다 ". 서버는 연결할 수 없습니다"

합리적으로 강화 된 서버에서 작업하고 있습니다. 시스템을 잠그지 않았으므로 정확히 무엇을했는지 확신 할 수 없습니다. 이들이 작동하려면 풀 ID 사용자 또는 도메인 보안 정책에 할당해야하는 자격 증명이있는 경우 이에 따라 도메인을 구성 할 수 있습니다. 코드 실행을 방해하는 설정이 있습니까? 코드 자체에 뭔가 빠졌습니까? 이 기능은 SharePoint 웹에서 가능하지 않습니까?

EDIT : .NET 4.0을 대상으로하는 콘솔 응용 프로그램에서 테스트 할 때 내 코드가 올바르게 작동합니다. 어떤 이유에서든 .NET 3.5를 타겟팅 할 때 콘솔 응용 프로그램에서 AccountManagement를 사용할 수 없었기 때문에 다른 프레임 워크를 대상으로했습니다.

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain)) 
using (UserPrincipal adUser = UserPrincipal.FindByIdentity(pc, "MYDOMAIN\joe.user")) 
using (GroupPrincipal adGroup = GroupPrincipal.FindByIdentity(pc, "MYDOMAIN\user group")) 
{ 
    if (adUser.IsMemberOf(adGroup)) 
    { 
     Console.WriteLine("User is a member!"); 
    } 
    else 
    { 
     Console.WriteLine("User is NOT a member."); 
    } 
} 

내 SharePoint 환경에 따라이 기능을 실행하지 못할 수도있는 것은 무엇입니까?

답변

1

IIS 응용 프로그램 풀에서 사용하는 계정을 Administrators 그룹에 추가 했으므로이 문제가 해결되었습니다.

+3

"Iron Fist of Justice"방식이며 프로덕션 또는 인터넷 연결 시스템에 권장되는 솔루션이 아닙니다. –

+2

@Burly - 좋은 지적입니다. 이것은 제 환경에서 작동합니다 : 연결이 끊어진 네트워크의 내부 시스템. 내가 만족하고있는 해결책은 아니지만 지금은 해결책이 될 것입니다.나는 코드가 오류없이 실행될 수 있도록 관리자에게 어떤 권한을 주길 원한다. 해당 사용자로부터 관리자 권한을 제거하고 필요에 따라 작업을 계속하는 동안 안전하게 권한을 부여하고 싶습니다. – antik

+0

@antik 결국 관리자 권한을 제거하고 Exception없이이를 실행할 수 있습니까? – FMFF

관련 문제