【发布时间】:2017-01-27 05:14:58
【问题描述】:
我在开发人员方面的角色。我有一个应用程序,我正在尝试检查用户是否有权访问共享。在应用程序中,我检查了该共享上的组。然后我检查用户所在的所有组。
在一种情况下,我无法看到用户在代码中的本地组或 Windows 中的 AD 例如:
域 A\User1 > 域 A\全局组 > 看不到:域 B\本地组
但是当我从域 B 看时,我看到了:
分享 > 域 B\本地组 > 域 A\全局组 > 看不到 域 A\User1强>
是否有一些安全设置没有正确设置,因为我在 windows 工具或代码中没有看到。
更新
我已经尝试了以下代码。我仍然看不到域 B\Local Group。
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 { }
}
}
【问题讨论】:
标签: active-directory