Meine Rolle auf der Entwicklerseite. Ich habe eine Anwendung, die ich versuche zu überprüfen, ob ein Benutzer Zugriff auf eine Freigabe hat. In der Anwendung überprüfe ich die Gruppen auf dieser Freigabe. Dann überprüfe ich alle Gruppen die Benutzer inActive Directory - Cross-Domains
In einem Fall, ich nicht in der Lage, die lokale Gruppe, um zu sehen, dass die Benutzer in beiden Code sind oder die AD in Windows . Zum Beispiel:
Domäne A \ User1>Domain A \ Global Group> wenn Sie nicht sehen: Domain B \ Local Group
Aber wenn ich von Domain BI aussehen sehen:
Teile>Domain B \ Local Group>Domain A \ Global Group> Do Domain A \ User1 nicht
Gibt es eine Sicherheitseinstellung sehen, die nicht richtig eingestellt ist, da ich in dem Windows-Tool nicht sehen oder Code.
aktualisieren
ich den folgenden Code versucht haben. Ich bin immer noch nicht in der Lage zu sehen Domain B \ Lokale Gruppe.
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 { }
}
}
Danke Dmitry. Ich werde das überprüfen. – H20rider
Ich konnte die Gruppen, in denen der Benutzer Teil der anderen Domäne war, nicht finden. Irgendwelche Ideen wie man das macht? Btw der GetEffectiveRightsFromAcl wird nicht funktionieren, da ich den Pfad zeigen muss, wie die Benutzer die Erlaubnis zu einer Freigabe haben – H20rider
Nur auf der gleichen Seite bestätigen Sie bitte, dass Sie Folgendes getan haben: 1. Stellen Sie eine Verbindung zu GC von Domäne A her. Binden an einen angegebenen Benutzer aus Domäne A. 3. Fragen Sie das Attribut tokenGroups ab. 4. Stellen Sie eine Verbindung mit GC aus Domäne B her. 5. Binden Sie an denselben Benutzer von Domäne A auf diesem GC. 6. Fragen Sie nach dem Attribut tokenGroups für diesen Benutzer auf diesem GC. – oldovets