LDAP Managerを使ってみた！ 3-1. 管理者メンテナンス構築編

[前回](https://qiita.com/ahra_/items/56f062f49b03eadd3860)の続きです。

## 管理者メンテナンスとは
管理者がユーザの追加、編集、削除やパスワードの強制変更、グループの管理などを行うWebアプリケーションと、Webアプリケーションから送信された情報をLDAPサーバに反映するプラグインです。
グループに割り当てる「ロール」を用いた参照/編集権限の管理、マッピング関数を使用したLDAP属性への値の割り当てや、画面表示値の動的な生成などが可能です。
## 事前準備
### JDKの準備
JDKにはEclipse Temurinを使用しました。
[提供サイト](https://adoptium.net/temurin/releases/)からVersion 17、Windows x64用のzipをダウンロードし、任意の場所に展開します。
![pic (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c312fff5-2801-0742-49e0-3cfde76cd577.png)
環境変数JAVA_HOMEおよびPathを設定します。
サーバを再起動します。
### Tomcatのインストール
Version 10.1.33のインストーラー版を使用しました。
![pic (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9443bdba-39ce-456b-7a9f-61a7bd7fa9cf.png)
### プラグイン側の設定
LDAP Manager コンソールを開き、上メニュー「環境設定」 > 「管理者ユーザメンテナンス1」を選択。
反映先となるLDAPサーバ、ユーザエントリを一意に識別する属性名（RDN属性名）、拡張パスワード属性名、ユーザエントリで使用するオブジェクトクラス、エントリ/コンテナの識別文字（LDAP Managerの管理対象かどうかを判定する文字）を入れた属性と属性値などを指定します。
アカウント削除方法は「無効」としました。
属性マッピングでは、最低限personオブジェクトクラスの必須属性である`sn`、`cn`をマッピングする必要があります。
![pic (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1c8dd78e-88d6-11c1-b1c6-4b8674843b4a.png)
次に、「管理者パスワードメンテナンス1」の環境設定を行います。
ここでは、対象ディレクトリの指定のみでも問題ありません。
マッピングが未設定でも、`userPassword`および`userPasswdInfo`属性などのWebアプリケーション側で更新された属性は自動的にLDAPサーバに反映されます。
![pic3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/13666347-68f9-3fe0-c6a4-903d64e5755e.png)
最後に、「管理者グループメンテナンス1」の環境設定を行います。
反映先のLDAPサーバ、使用するオブジェクトクラスなどを指定します。
拡張メンバ属性として、事前に用意していたexexmember1、2を指定しました。
![pic (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fdde5ae2-e469-d405-d43f-da54bb2fd3e8.png)
マッピングは以下の通り設定しました。
![pic (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/98cf6e52-3851-abd5-9429-19d4813ecb3b.png)
### Webアプリケーションのデプロイ
`<tomcat_home>\webapps\` に`admin-mtn-sv`フォルダをコピーします。
![pic (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/220a2bed-680c-ea6d-ad0e-819806c774b6.png)
## 管理者メンテナンスの設定
### 基本設定
`<tomcat_home>\webapps\admin-mtn-sv\WEB-INF\configTool\adminmtn-setup.bat`を実行し、「管理者メンテナンス設定」を起動します。
![pic (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/489f97f2-4975-5892-7c50-231c4f9fdb62.png)
まず、システムIDにはLDAP Manager用のシステムIDを設定します。
![pic (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5587b22c-3c08-4734-b487-8abeaf3765c0.png)
LDAP Managerサーバ情報には、サーバの名称とホスト名、ポート番号を指定します。
![pic (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bb9e7c82-11de-b2bb-e262-697b358845df.png)
LDAPサーバ情報には、LDAPサーバの各接続情報を設定します。
![pic (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/85b4f249-4e60-24dc-5cc8-a401a13cd4fa.png)
クラウド印刷機能は使用しなかったため、設定をスキップしました。
LDAP属性情報では、`<LDAP Managerインストールディレクトリ>\conf\directory.ini`をコピーし、入力元データとしました。
![pic (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/f3ce7c2d-3846-44ae-e107-5e4f5892a51c.png)
![pic (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/cf9a867f-e205-896f-cb2a-46dbd16af2ab.png)
![pic (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3b3c0749-a66d-1ef5-da06-60d75b2069ab.png)
認証情報設定では、LDAP Manager認証を指定しました。
![pic (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/86c6616a-ba44-2f76-04ae-9e23b1b99568.png)
グループ情報は一旦デフォルトとします。
![pic (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/643e5613-b858-d438-4a5f-6ba0f0c1fc31.png)
ここで列挙されているグループを、LDAP Manager本体側にも作成し、ユーザに割り当てます。
![pic (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0a2b2c25-07e0-2229-ff8c-09c516fdc224.png)
### 管理者ユーザメンテナンスの設定
まずは、「アプリケーション情報」 > 「ユーザメンテナンス」から、デフォルトで設定されているロールを「修正」します。
![pic (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9eae18da-09a8-b8ad-605e-33aa7a6fb4f4.png)
LDAP Managerサーバを指定し、実行プラグイン名には`MGRGUI1`を指定します。
今回は指定していませんが、連携プラグインを指定するとメンテナンス後に別のプラグインをリモート実行できます。
![pic (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/36ea9d64-3de0-1a5f-9c5a-7d8f7fd9567c.png)
「LDAP情報」タブでは対象のLDAPサーバと、**ユーザエントリのあるコンテナのDN**をベースDNとして指定します。
その他、「コンテナ抽出フィルタ」および「ユーザ抽出フィルタ」の一部を`description=LM`に変更し、RDN属性名はプラグインに合わせ`cn`を指定、自動採番しないように設定しています。
![pic (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3b54c8fd-a7a6-ee62-bd1d-bcdc752ec2f9.png)
「エントリ操作設定」では、すべての操作を許可としました。
![pic (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/92558e56-fa60-9133-e517-2571482ea307.png)
「印刷&メール送信」はデフォルトとしました。
「ユーザメンテナンスコンポーネント設定画面」では、標準の検索KEYにユーザID=`cn`、LDAPフィルタに英語姓=`sn`と英語名=`givenName`を使用できるようにし、`sn`と`givenName`のANDを「姓名」という名前の「よく使うボタン」として登録しました。
![pic (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5fc7be76-f16f-7af3-c2d7-63bd91c76141.png)
RDN値入力チェックは使用しないため、デフォルトとしました。
![pic (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4508d31b-04bb-c158-5437-43ac2523ddf1.png)
「ユーザ一覧表示」では、表示する項目をユーザID=`cn`、英語姓=`sn`、英語名=`givenName`、アカウント有効/無効=`exgEnabledFlag`、固有番号=`uid`としました。
![pic (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bc5c110c-e0c3-e7ea-fb33-fb58cec6e599.png)
「ユーザ詳細画面設定」では、ユーザ詳細画面の基本情報タブにて表示・編集する項目として英語姓=`sn`、英語名=`givenName`、パスワード=`userPassword`を指定しています。
ここに設定した属性は、[プラグイン側の設定](#プラグイン側の設定)において「管理者メンテナンス属性名」として指定され、適切な「LDAP属性名」にマッピングされている必要があります。
![pic (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2f8a0beb-5b0e-b324-a5ef-8073417673dc.png)
### 管理者パスワードメンテナンスの設定
ここでもまず、「アプリケーション情報」 > 「パスワードメンテナンス」からデフォルトのロールを「修正」します。
LDAP Managerサーバを指定し、拡張パスワード属性を追加します。
![pic (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/420c5317-d74a-d47b-9697-62d4740c5778.png)
「LDAP情報タブ」では、接続先となるLDAPサーバとユーザエントリのあるコンテナのDN、ユーザ抽出フィルタを設定しました。
![pic (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bacfa6fe-b31f-3f7f-4d8d-8d80693964d6.png)
LDAP→AD反映を連携プラグインに指定していないため、「ADアカウントロック解除」は許可しない設定としました。
![pic (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6d6106ca-bc15-b07a-63da-b35bfe730b74.png)
印刷設定は使用しないためデフォルトとしました。
「パスワードメンテナンスコンポーネント設定画面」はすべてデフォルトとしました。
![pic (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1ac5aa5e-0516-b419-49f6-c684197fae83.png)
![pic (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a29bfc50-de88-1b6e-92fd-e5a87060c0c7.png)
![pic (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5113aeda-3b43-70b3-f6c1-80ec3863cf6f.png)
![pic (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8f29c4ef-11f9-9087-9333-e961b3a8a9e1.png)
### 管理者グループメンテナンスの設定
グループメンテナンスにおいても、まずはデフォルトのロールを変更します。
接続先のLDAP Managerサーバと、実行プラグイン名を指定します。
![pic (33).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/81e781e8-d524-904b-9236-b01572278dda.png)
「LDAP情報」タブでは接続先LDAPサーバをまず指定します。
次に、「グループ情報」タブではグループエントリのあるコンテナのDNをベースDNに、また各フィルタ等を環境に合わせて指定します。
![pic (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/76738944-6bf4-d798-b2b1-f0bb924d3434.png)
「ユーザ情報」タブにおいても、ユーザエントリのあるコンテナのDNの指定と各フィルタの設定を行います。
![pic (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/73abaa48-a001-b2f4-4887-e7423265c9a5.png)
「エントリ操作設定」はすべて許可としました。
![pic (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b23ee787-16bf-09cf-22fb-29bd14fb5887.png)
「グループメンテナンスコンポーネント設定画面」においては、メンバ検索KEYにユーザID=`cn`、フィルタに英語姓=`sn`、英語名=`givenName`を使用する設定にし、グループ検索KEYにグループ名=`cn`を使用するように指定しました。
![pic (37).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ba4379d0-e36e-9a4c-1146-6b45d3e9e709.png)
![pic (38).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ebf74710-48f9-4810-8daa-525a686004a7.png)
「RDN値入力チェック」は使用しないためデフォルトとしました。
グループエントリ表示設定では、グループ名=`cn`と組織単位=`ou`が表示され、`ou`で昇順ソートされるようにしました。
![pic (39).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/210e6365-23ab-8e6c-50a6-eae77baf3b86.png)
「グループエントリ編集画面設定」タブでは「基本情報」タブで組織単位=`ou`が、追加した「追加情報タブ」で職種=`businessCategory`が編集できるように設定しています。
![pic (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fa76da21-e091-5042-ce24-c30bc4e0a421.png)
![pic (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/cdd92b92-a689-5c13-2743-c2867014208c.png)
「メンバリスト属性設定」では、拡張メンバ属性である`exexgmember1`が「上長」という名称の拡張メンバ属性となるように設定しています。
![pic (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/54cf46ce-824c-9d68-7ecd-3d82a3831538.png)
メンバ一覧設定では、ユーザの属性として英語姓=`sn`、英語名=`givenName`、ユーザID=`cn`を、グループの属性としてグループ名=`cn`を表示するように設定しました。
メンバとしてグループを追加したい場合、必ずこのようにグループの属性も追加する必要があります。
![pic (43).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/f7582277-55b7-f50e-718c-0b1be722fa76.png)
## 
ここまでで、管理者メンテナンスの基本的な機能を検証するための設定は終了です。
[次の記事](https://qiita.com/ahra_/items/d48c38e15ab7de2e6705)では、設定した管理者メンテナンスを実際に操作して動作を検証した後、応用的動作の確認を行います。