2012-09-15 2 views
0

Windows 7에서 AD LDS를 사용하고 adaminstall 유틸리티를 사용하여 새 응용 프로그램 파티션이있는 로컬 인스턴스를 만들었습니다.CN = 독자, CN = C#의 AD LDS 파티션에 로컬 그룹 추가

기존 로컬 Windows 그룹을이 파티션의 독자 역할에 추가하려면 어떻게합니까?

  1. ADSI 편집을 시작하고 AD LDS 인스턴스와 파티션에 연결 :

    나는 다음과 같은 수동 단계에 의해 제공되는 (C#으로) 프로그래밍 같은 결과를 얻을 싶어요.

  2. 파티션 루트 노드 아래의 CN = 독자로 이동하십시오.
  3. CN = 독자 항목을 두 번 클릭하십시오.
  4. "회원"속성을 두 번 클릭하십시오.
  5. 기존 로컬 Windows 그룹을 선택하고 추가하십시오. 로컬 그룹은 적어도 상기 한 수동 단계를 사용하여 독자의 역할에 한 번 추가 된 경우

    public void AddReader(string partitionName, string accountName) 
    { 
        var ntAccount = new NTAccount(accountName); 
        var securityIdentifer = ntAccount.Translate(typeof(SecurityIdentifier)); 
        var accountNameDN = string.Format("CN={0},CN=ForeignSecurityPrincipals,{1}", securityIdentifer.Value, partitionName); 
    
        var rootPath = string.Format("LDAP://localhost:389/CN=Readers,CN=Roles,{0}", partitionName) 
        var directoryEntry = new DirectoryEntry(RootPath); 
        directoryEntry.Properties["member"].Add(accountNameDN); 
        directoryEntry.CommitChanges(); 
    } 
    

    이 코드는 작동 :

는 이미 다음 C# 코드가 있습니다. 그룹을 수동으로 추가 한 다음 수동으로 제거하면 위에 표시된 코드를 사용하여 그룹을 다시 추가 할 수 있습니다. 나는 새로운 로컬 Windows 그룹을 추가 할 때

는하지만, 코드의 CommitChanges() 호출은 위의 오류 코드 0x8007002F 및 메시지 A constraint violation occurredDirectoryServicesCOMException가 발생합니다.

분명히 수동 단계는 기존 로컬 Windows 그룹에서 AD LDS 판독기 역할에 추가하기에 적합한 일부 수정 작업을 수행합니다. 하지만 내가 뭘 놓치고 있니?

내 접근 방식보다 ActiveDirectorySecurityActiveDirectoryAccessRule 클래스를 사용하는 것이 더 나은 방법이라고 생각하지만 사용 방법을 알 수는 없습니다.

답변

0

FSP (Foreign Security Principal)에 관한 Eric의 암시에 대해 Google (Google과 나)은 여기 해결책을 찾았습니다 : http://www.pcreview.co.uk/forums/add-group-members-trusted-domain-programmatically-t1460084.html (Joe Kaplans의 대답에 이르기까지 스크롤 다운).

트릭은 accountNameDN 변수에 <SID=xxx> 구문을 사용하는 것입니다. accountNameDN 변수가 다음과 같이 수정되면 원래 질문의 코드 샘플이 작동합니다.

var accountNameDN = string.Format("<SID={0}>", securityIdentifer.Value); 

이렇게하면 필수 FSP가 암시 적으로 추가됩니다.

+0

나를 위해 작동하지 않습니다 .. System.DirectoryServices.DirectoryServicesCOMException : 서버 요청을 처리하지 않으려 고합니다. –

1

당신의 구성에서 최소한 어떤 역할에 SID를 추가 할 때까지 그 주체에 대한 FSP가 없으므로 SID에 의한 참조가 실패합니다.

독자 그룹에 추가하는 방법을 SID a la로 그룹에 주인을 추가하려 했습니까? 이것이 내부 툴링으로 어떻게 수행되는지 알아 내고 싶다면 독자 그룹에 추가 할 때 LDS 인스턴스와 사용하는 도구간에 LDAP 호출의 네트워크 스니핑을 취하십시오.

+0

감사합니다. 그건 의미가 있습니다. 나는 사전에 FSP를 추가해야한다는 것을 모르고있었습니다. 그것을 시도 할 것입니다. LDAP 추적은 어떻게받을 수 있습니까?Wireshark를 사용하려했지만 암호화 된 LDAP 데이터 ("SASL GSS-API Private : payload"와 같은 것) 만 표시합니다. "SSL 기반 암호화 사용"옵션이 선택되지 않았습니다. – candritzky

+1

직접 FSP를 추가 할 필요는 없습니다 ... LDS는 귀하를 대신해 기꺼이 도와드립니다. 그러나 FSP DN이 아닌 SID를 사용하여 주체를 참조해야합니다 (일반적으로 ). 일반적으로 DN의 항목을 추가하면 거기에없는 FSP에 종속 될 위험이 있습니다. LDS가 당신을 위해 일합니다 –

+0

이미 힌트를 기반으로 발견하고 해결했습니다 (내 대답은 아래 참조). 다시 올바른 방향으로 나를 밀어 주셔서 감사합니다 – candritzky

관련 문제