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」をご覧ください。