2011-12-16 2 views
3

현재 Sharepoint (2007) 웹 파트 내에서 현재 사용자가 속한 모든 AD 그룹 SID를 찾아야합니다.사용자 그룹 찾기 Sharepoint 내의 SID

내가 System.DirectoryServices.AccountManagement 네임 스페이스를 사용하고 싶었 :

using (var context = new PrincipalContext(ContextType.Domain)) 
{ 
    using (var user = UserPrincipal.FindByIdentity(context, accountName)) 
    { 
     var groups = user.GetAuthorizationGroups(); 
     ... 
    } 
} 

을, 그러나 나는 다음과 같은 오류 얻을 :

이벤트 ID : 권한 설정을 통해 10,016 (응용 프로그램 특정을)이 SID입니다 CLSID가 {61738644-F196-11D0-9953-00C04FD919C1} 인 COM 서버 응용 프로그램에 대해 localhost 주소 (LRPC 사용)의 NT AUTHORITY \ NETWORK SERVICE에 대해 (로컬) 활성화 할 수있는 권한이 없습니다 (S-1-5-20)

이 방법을 사용하면 레지스트리 값 (응용 프로그램의 소유권, dcomcnfg에서 응용 프로그램 값을 변경할 수 있음)을 변경하고 나중에 dcomcnfg의 COM 보안에서 사용자 권한을 변경해야합니다. .

Sharepoint에서 현재 사용자의 SID에 액세스하는 다른 방법이 있습니까?

SPContext.Current.Web.CurrentUser.Groups에서이 값을 찾을 수 있기를 정말로 기대했지만 실제로는 그렇지 않았습니다.

답변

1

여기에 SharePoint 방법을 사용하고 System 어셈블리는 사용하지 말고 SharePoint를 사용해야합니다.

각 사용자의 SID는 SPUser.Sid 속성에 있습니다. 광고 그룹 만 찾고 싶다면 속성이 SPUser인지 확인하십시오.

이제 '현재 사용자 : 'SPContext.Current.Web.CurrentUser (a SPUser` 개체를 확인하기 만하면됩니다.

사용자가 속한 모든 그룹을 얻는 방법에 대한 질문에 답변하려면 실제로 System.DirectoryServices을 사용해야합니다. 당신의 문제에 대한 솔루션은 다음과 같은 유래 게시물에 표시됩니다 :

: SPUser 객체뿐만 아니라 Active Directory를 쿼리

+0

감사에 대한 DirectoryServices를 통해 재생. 저에게는 해결책이 한 가지 문제가 있습니다. System.DirectoryServices를 사용하는 동안 AD 읽기 권한이있는 사용자의 사용자 이름과 암호를 제공해야합니다. 사용자 자격 증명을 제공하지 않고 SharePoint를 통해 System.DirectoryServices를 사용하여 AD에 액세스하는 방법이 있습니까? 예를 들어이 생성자를 사용하고 사용자 이름 및 암호 필드를 비워두고 특정 인증 유형을 지정 하시겠습니까? 공개 DirectoryEntry (문자열 경로, 문자열 사용자 이름, 문자열 암호, AuthenticationTypes 인증 유형); – mrtns

+0

읽기 권한이있는 사용자를 지정하는 것이 잘못된 이유는 무엇입니까? 예를 들어 Sharepoint 응용 프로그램 풀의 사용자가 활성 디렉토리를 읽거나이를 위해 전용 사용자를 만들 수 있습니다. –

+0

감사합니다. DirectoryEntry 개체에 자격 증명을 제공하는 것 외에 다른 옵션도 없습니다. – mrtns

관련 문제