1

私のような質問をいくつか見ましたが、実際に当てはまるものはありません。私が直面している問題は次のとおりです。

User のグループ メンバーシップを取得する必要があります。

  • ドメイン B のグループ
  • ドメイン A のユーザー。
  • ドメイン B のサービス。
  • フォレストからフォレストへの双方向の信頼。

ユーザーがサービスにアタッチすると、サービスは SID や名前などを含む WindowsIdentity オブジェクトを取得します。

グループ メンバーシップを取得するために、UserPrincipal オブジェクトを使用しています。これを取得するには、PrincipalContext オブジェクトが必要です。PrincipalContext オブジェクトのコンストラクターには、ドメインの FQDN (つまり、A.some.domain.com) が必要です。WindowsIdentity オブジェクトのユーザー名 (つまり、A\User) に NetBios ドメイン名が含まれていますが、DNS 名を取得する方法がわかりません。

以下は、HARD CODED という DNS 名を持つコードの例です。これは機能しますが、ハード コーディングされた部分を取り除く必要があります。

-- WindowsIdentity wi (メソッドに渡される) --

PrincipalContext context = new PrincipalContext(ContextType.Domain, "A.some.domain.com");
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.Sid, wi.User.ToString());

System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain().Name を使用して偽装を使用する別のソリューションがありますが、偽装が使用できない可能性があるため、これは受け入れられません。TokenImpersonationLevel.Identificationで動作するソリューションが必要です

MSDN と Google (Stack Overflow を含む) を探し回るのに数日を費やしましたが、役に立ちませんでした。

4

1 に答える 1