自宅の検証でWikiサーバーを構築しているんですが、この機能の一つでLDAP認証ができます。ということで、仮想マシンとしてWikiサーバとWindows Server 2016を構築し、LDAP連携テストをしています。
そして、LdapからWindowsのLDAP連携検証をしている中で、それぞれ、仕組みが近いようで、指定の仕方が違う部分があるので、設定が意外と大変です。
そして、LDAPからActiveDirectoryのネストされたグループ検索をする場合に使用する演算子があるそうなので、共有します。
Active Directory環境では、セキュリティグループのメンバーにセキュリティグループを入れるというネスト(入れ子)構造がよく利用されますが、実際の現場でもグループの下にグループ、その下にグループという構成があったりします。これ意外と複雑ですよね。
例えば、、、
グループ1
|
グループ2
|
グループ3
そして、ユーザーはグループ3にいる場合、LDAPのサーチフィルタでグループ1を指定すると、ネストされたグループ3のユーザーが検索できないのです。今回したいのが、Wikiサーバーでグループフィルターをしたいのですが、ここで、グループ1を指定して、その下のグループのユーザーもサーチできるようにしたいのです。
そこで、使えるのがLDAPからActiveDirectoryのネストされたグループ検索をする場合に使用する演算子です。以下はマイクロソフトのサイトです。
検索フィルタの構文(マイクロソフト開発者ネットワーク)検索フィルタの構文(マイクロソフト開発者ネットワーク)
まず基本的に抑えておいた方がいいのがこの演算子です。
『演算子』
次の表に、頻繁に使用される検索フィルタ演算子を示します。
論理演算子
説明論理演算子 説明
= に等しい
~= おおよそ
<= 辞書学的には以下のもの
> = 言語学的にはより大きいか等しい
そして、 そして
| または
! NOT
続いて、LDAPによって実装された一致規則のOIDをサイトから抜粋します。ネストされたグループでユーザーを検索するActiveDirectory独特の演算子がこちらです。
1.2.840.113556.1.4.1941 LDAP_MATCHING_RULE_IN_CHAIN このルールは、DNに適用されるフィルタに限定されています。これは特別な「拡張」マッチ演算子であり、オブジェクト内の祖先のチェーンをマッチするまでルートまで移動します。
「memberof:1.2.840.113556.1.4.1941」の部分が重要です。
(memberof:1.2.840.113556.1.4.1941:= cn = Group1、OU = groupsOU、DC = x)
これを指定することで階層化されたグループのユーザーをサーチ可能になります。実際にWikiサーバーに設定したころうまく動作しました。認証も奥が深いですね。