LDAP フィルターを SharePoint Server 2010 の接続のフィルターに変換する

LDAP フィルターを SharePoint Server 2010 の接続のフィルターに変換する

AD DS などの LDAP プロバイダーと SharePoint Server 2010 の間でプロファイルの同期を設定する場合に、既存の LDAP フィルターを SharePoint の接続のフィルターに変換したいときがあります。この投稿では、LDAP フィルターを SharePoint の接続のフィルターに変換する例について説明します。SharePoint UI を使用して接続のフィルターを入力する手順については、「プロファイルの同期を構成する (SharePoint Server 2010)」の「同期接続の除外フィルターを定義する」を参照してください。

LDAP フィルターは、取り込むディレクトリ オブジェクトを定義します。SharePoint の接続のフィルターは、除外するユーザーを定義します。

LDAP フィルターとはどのようなものでしょうか。それはどのような方法で SharePoint 2010 の接続のフィルターに変換できるでしょうか。次はそれらについて説明しましょう。次にフィルターの例を示します。

  • 検索ベース: DC=cts,DC=contoso,DC=com
  • ユーザー フィルター: (&(objectCategory=Person)(!userAccountControl:1.2.840.113556.1.4.803:=2) (&(!extensionAttribute1=0)(extensionAttribute1=*)(sAMAccountName=*)(memberOf=CN=SharePoint Users,OU=Security,OU=Groups,DC=cts,DC=contoso,DC=com)))

LDAP フィルターを単純な論理ステートメントの構成に変換して、ステートメントをわかりやすく扱えるようにしましょう。

  • A: objectCategory = Person
  • B: userAccountControl:1.2.840.113556.1.4.803:=2
  • C: extensionAttribute1=0
  • D: extentionAttribute1=*
  • E: sAMAccountName=*
  • F: memberOf= CN=SharePoint Users, OU=Security, OU=Groups, DC=cts, DC=contoso,DC=com

上記のフィルターは次のように解釈できます: A ∧ ¬B ∧ (¬C ∧ D ∧ E ∧ F)
ここで、 ∧ は AND、 ∨ は OR、¬ は NOT を表します。

次の表に、ブール代数の操作方法を示します。

元の LDAP フィルター

A ∧ ¬B ∧ (¬C ∧ D ∧ E ∧ F)

かっこを外す

A ∧ ¬B ∧ ¬C ∧ D ∧ E ∧ F

フィルターを反転して除外フィルターにする

¬ (A ∧ ¬B ∧ ¬C ∧ D ∧ E ∧ F)

単純化する(ド・モルガンの法則)

¬A ∨ ¬¬B ∨ ¬¬C ∨ ¬D ∨ ¬E ∨ ¬F

二重否定を外す

¬A ∨ B ∨ C ∨ ¬D ∨ ¬E ∨ ¬F

前述のステートメントで A、B、C、D、E、F を置き換えると、次のようになります。

(NOT (objectCategory = Person))
OR (userAccountControl:1.2.840.113556.1.4.803: = 2)
OR (extensionAttribute1 = 0)
OR (NOT (extensionAttribute1 = *))
OR (NOT (sAMAccountName = *))
OR (NOT (memberOf = CN=SharePoint Users,OU=Security,OU=Groups,DC=cts,DC=contoso,DC=com))

これを SharePoint の接続のフィルターの UI に入力できる形式で言い換えると、次のようになります。

AND/OR

属性

演算子

フィルター

OR

objectCategory

次の値に等しくない

Person

OR

userAccountControl

ビット単位 ON =

2

OR

extensionAttribute1

次の値に等しい

0

OR

extensionAttribute1

存在しない

OR

sAMAccountName

存在しない

OR

member

次の値を含まない

CN=SharePoint Users, OU=Security, OU=Groups, DC=cts, DC=contoso, DC=com

フィルターの最初の句 "objectCategory は Person と等しくない" は不要です。objectCategory が Person と等しくない項目は、接続のフィルターを作成してユーザーを同期するときに自動的に除外されます。接続のフィルターを作成するときは、それ以外の残り 5 行の値を使用して、[接続のフィルターの編集] (Edit Connection Filters) ページの [ユーザーの除外フィルター] (Exclusion Filter for Users) セクションに値を入力します。

この情報のオリジナル版について Oleg Lysyk 氏に深く感謝します。

 

これはローカライズされたブログ投稿です。原文の記事は、「Converting an LDAP filter to a SharePoint Server 2010 connection filter」をご覧ください。