開発者側の私の役割。私は、ユーザーがシェアにアクセスできるかどうかを確認するためにチェックしているアプリケーションがあります。アプリケーションでは、その共有上のグループをチェックします。それから私は、ユーザーがにあるすべてのグループを確認しActive Directory - クロスドメイン
を一つのケースでは、ユーザーがコードや窓例えば でADの両方にあるローカルグループを参照するIができません:。
ドメインAを\ User1の>ドメインA \グローバルグループ>参照してくださいしないでください。ドメインB \ローカルグループ
しかし、私は、ドメインBIから見たときに参照してください。
シェア>ドメインB \ローカルグループ>ドメインA \グローバルグループ>ドメインA \ User1の
が表示されない場合、私は、Windowsのツールで見ていけないので、正しく設定されていないいくつかのセキュリティ設定がありますまたはコード。
更新
私は、次のコードを試してみました。私はまだドメイン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 { }
}
}
ありがとうドミトリー。私はこれをチェックします。 – H20rider
ユーザーが他のドメインに属していたグループを見つけることができませんでした。どのようにこれを行うにはどのようなアイデア? Btw GetEffectiveRightsFromAclは、ユーザーに共有へのアクセス許可のパスを表示する必要があるため、機能しません。 – H20rider
同じページにいるだけで、次のことを確認してください。1.ドメインAからGCに接続します。ドメインAから指定されたユーザーにバインドします。3.トークングループ属性を照会します。 4.ドメインBからGCに接続します。5.このGCのドメインAから同じユーザーにバインドします。 6.このGCでこのユーザーのtokenGroups属性を照会してください – oldovets