사용자가 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.Impersonate
및 SPSecurity.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 환경에 따라이 기능을 실행하지 못할 수도있는 것은 무엇입니까?
"Iron Fist of Justice"방식이며 프로덕션 또는 인터넷 연결 시스템에 권장되는 솔루션이 아닙니다. –
@Burly - 좋은 지적입니다. 이것은 제 환경에서 작동합니다 : 연결이 끊어진 네트워크의 내부 시스템. 내가 만족하고있는 해결책은 아니지만 지금은 해결책이 될 것입니다.나는 코드가 오류없이 실행될 수 있도록 관리자에게 어떤 권한을 주길 원한다. 해당 사용자로부터 관리자 권한을 제거하고 필요에 따라 작업을 계속하는 동안 안전하게 권한을 부여하고 싶습니다. – antik
@antik 결국 관리자 권한을 제거하고 Exception없이이를 실행할 수 있습니까? – FMFF