2011-01-13 12 views
0

コードでは、Category.Role形式のロールを持つ「従業員」があります。Categoryはロールの一種です。たとえば、Foo.BarFoo.Foobar - 両方ともFooのロールです。 Fooは実際に私のプロジェクトの名前空間ではありませんが、私はそういう意味で考えています。Active Directory/LDAPは名前空間に相当しますか?

私は割り当ておよび/またはLDAPクエリから読み出すことができ、Active Directory内のいくつかの容器または階層的役割/基当量、そのような私は任意のFoo役割、または特定と皆のためのクエリの両方をできることがありますFoo.X役割?

+0

あなたはazmanの役割について話していますか?または、ADグループを役割として使用することについて話していますか? –

+0

@Harvey ADグループ。 – Jay

+0

ADグループParentを作成して、ADグループChild1とChild2をグループParentに追加することができます。次に、Child1に追加されたユーザーには、自動的にParentおよびChild1ロールが割り当てられます。 IsInRole()を使用している場合は、自動的に機能します。 –

答えて

1

Active Directoryでは、グループを別のグループのメンバーとして割り当てることができます。ですから、正しく理解すれば、 "Foo"というADグループを作成し、 "Foo.Bar"と "Foo.Foobar"の2つのサブグループを作成します。これら2つのサブグループをグループ "Foo"のメンバーとして割り当てます。

次に、ユーザーが "Foo.Bar"をグループ化した場合。彼は "Foo"と "Foo.Bar"の両方の役割を果たします。つまり、そのユーザーのWindowsPrincipalを取得した場合は、WindowsPrincipal.IsInRole( "Foo")とWindowsPrincipal.IsInRole( "Foo.Bar")の両方がtrueを返します。

IsInRole()関数を使用してメンバーシップを確認するのではなく、純粋なLDAPクエリを使用している場合は、ネストされたグループ関係を簡単に調べることができません。単一のLDAPクエリ呼び出しを行う方法を実際に調べたい場合は、ADユーザーオブジェクトの "tokenGroups"属性を探してみてください。これは、オンザフライでADによって計算された計算された属性です。ネストされたグループ情報がすべて含まれます。唯一のことは、SIDを格納していることです。したがって、ADグループのSIDを見つけてLDAPバイナリ形式に変換し、クエリを実行する必要があります。

関連する問題