개발자 입장에서의 저의 역할. 사용자가 공유에 액세스 할 수 있는지 확인하려고하는 응용 프로그램이 있습니다. 응용 프로그램에서 해당 공유에있는 그룹을 확인합니다. 그런 다음 사용자가 속한 모든 그룹을 확인Active Directory - 크로스 도메인
을 한 경우, 사용자가 코드 또는 윈도우 예를 들어 에서 AD 모두에있는 로컬 그룹에 볼 I 수 없습니다 :.
도메인 A를 \ 사용자 1>도메인 A \ 글로벌 그룹> 참조하지 마십시오 나는 도메인 BI에서 볼 때 도메인 B \ 로컬 그룹은
는하지만, 참조 :
공유>도메인 B \ 로컬 그룹>도메인 A \ 글로벌 그룹>도메인 A \ 사용자 1
나는 창문 도구에 표시 해달라고 때문에 제대로 설정되지 않은 일부 보안 설정이 거기에 표시되지 않습니다 또는 코드. 나는 다음과 같은 코드를 시도
업데이트. 나는 여전히 볼 수 없습니다 도메인 B \ 로컬 그룹. 당신이 사용자의 회원이 전체 포리스트의 각 도메인에 하나의 글로벌 카탈로그를 조회 할에 사용자가 속한 모든 그룹을 검색하기 위해
string account = "{User**Or**Group}";
string domain = "{Domain}";
string dn = ADHelper.GetDistinguishedName(domain, account);
using (var forest = Forest.GetCurrentForest())
{
foreach (Domain domainName in forest.Domains)
{
Console.WriteLine(string.Format("Domain: {0}", domainName.Name));
Console.WriteLine("========================================================");
GetAllGroups(dn, domainName.Name);
domainName.Dispose();
}
}
void GetAllGroups(string dn, string domain)
{
DirectorySearcher ds = new DirectorySearcher(string.Format("GC://{0}", domain));
ds.Filter = String.Format("(&(distinguishedName={0}))", dn);
SearchResult sr = ds.FindOne();
if (sr == null)
return;
DirectoryEntry Diruser = sr.GetDirectoryEntry();
Diruser.RefreshCache(new string[] { "tokenGroups" });
for (int i = 0; i < Diruser.Properties["tokenGroups"].Count; i++)
{
SecurityIdentifier sid = new SecurityIdentifier((byte[])Diruser.Properties["tokenGroups"][i], 0);
try
{
NTAccount nt = (NTAccount)sid.Translate(typeof(NTAccount));
Console.WriteLine(nt.Value + "\t" + domain);
}
catch { }
}
}
감사 Dmitry. 나는 이것을 조사 할 것이다. – H20rider
다른 도메인에서 사용자가 속한 그룹을 찾을 수 없습니다. 어떤 아이디어가 이것을 어떻게? Btw GetEffectiveRightsFromAcl은 사용자가 공유 권한을 얻는 경로를 보여줄 필요가 있기 때문에 작동하지 않습니다 – H20rider
같은 페이지에 있어야 다음 작업을 수행했는지 확인하십시오. 1. 도메인 A에서 GC에 연결하십시오. 2. 도메인 A에서 지정된 사용자에게 바인드하십시오. 3. 토큰 그룹 토큰 속성을 조회하십시오. 4. 도메인 B에서 GC에 연결하십시오. 5.이 GC에서 도메인 A에서 동일한 사용자에게 바인드하십시오. 6.이 GC에서이 사용자에 대한 tokenGroups 속성 쿼리 – oldovets