LDAP Managerを使ってみた！ 10-1. IDワークフロー設定編

[前回](https://qiita.com/ahra_/items/287ccf18363734140926)の続きです。
## IDワークフローとは
ID情報を利用者による申請・承認の後メタディレクトリサーバに反映し、利用可能にするワークフローシステムです。
**「IDワークフロー」** と呼ばれるWebアプリケーションと **「予約エントリ反映プラグイン」** の2つから成り立ちます。
### IDワークフロー（Webアプリケーション）とは
申請書の作成と承認、ID情報を予約エントリに連携するWebアプリケーションです。利用者ごとの細かな権限付与や、代理承認機能、LDAPグループを使用した承認ルートの設定機能、催促メール機能などの多彩な機能を持ちます。
### 予約エントリ反映プラグインとは
IDワークフロー（Webアプリケーション）や、CSV→LDAP反映、ELMインターフェースなどによって追加された予約エントリのLDAP更新情報を指定日・指定条件で正規エントリに反映するプラグインです。
正規エントリへの反映後、連携プラグインとしてLDAP -> AD連携などを設定することで、ワークフローで追加されたID情報を他のシステムへ連携することが可能です。
## 事前準備
### データベースの準備
PostgreSQLにIDワークフロー用のデータベースを用意します。
```
postgres=# create database idworkflow;
CREATE DATABASE
postgres=# create role idworkflow with login password 'idworkflow';
CREATE ROLE
postgres=# grant all on database idworkflow to idworkflow;
GRANT
postgres=# alter database idworkflow owner to idworkflow;
ALTER DATABASE
```
次に、テーブル作成用SQL（`インストールメディア \webapps\Idworkflow\tools\PostgreSQL.SQL`）を実行します。
```
$ psql -d idworkflow -f /tmp/postgreSQL.SQL -h 192.168.181.41 -U idworkflow -W
パスワード：
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
```
### 予約エントリ用オブジェクトクラスとOUの追加
以下のような`.ldif`ファイルを用意し、`ldapadd`コマンドを使って予約エントリ用オブジェクトクラスと予約エントリを格納する`OU`を追加します。
``` 
dn: cn=yoyakuEntry,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: yoyakuEntry
olcAttributeTypes: {0}( 1.3.6.1.4.1.45908.1.6001 NAME 'changeType' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.45908.1.6002 NAME 'applyDate' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcObjectClasses: {0}( 1.3.6.1.4.1.45908.2.5 NAME 'yoyakuEntry' SUP top STRUCTURAL MUST ( changeType $ applyDate $ cn $ sn $ uid ) MAY ( ou $ givenName $ title ))

```
```
dn: ou=yoyaku,dc=itdo,dc=example,dc=com
objectclass: organizationalUnit
ou: yoyaku
```
### LDAP Manager本体側の設定
予約エントリ用のディレクトリを追加します。
![pic (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ec01c5a9-8b6c-ceb2-ce4a-c2b00b1ace8f.png)
ディレクトリを追加したらディレクトリ属性を追加します。
![pic (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e081bee7-b053-5165-884f-b2093bd44f7f.png)
![pic (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9d203293-1580-b64c-4bfe-b4c244f4e82b.png)
「予約エントリ反映」プラグインは、正規エントリの検索範囲に予約エントリが入ってしまうと動作しないので、正規エントリ用のディレクトリも追加します。
![pic (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9856513f-2ace-0be1-5abe-1394bfcc2a5a.png)
こちらにもディレクトリ属性を追加します。
![pic (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/193ad09c-f3a9-1a1f-4c0f-e889c7203202.png)
## 予約エントリ反映の初期設定
予約エントリ反映プラグインをインストールします。
![pic (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/d612fa06-f070-b6fb-9438-f0282b61e813.png)
LDAP Managerコンソール「環境設定」 > 「予約エントリ反映1」を選択し、設定画面を開きます。
「基本設定」では予約エントリ、正規エントリ別に接続情報等を設定します。
![pic (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a0431d7d-594b-3e21-6046-053475c0f5c6.png)
マッピングは下記の通りとしました。
![pic (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2a551ca6-030d-fdcd-2cd6-2bfb6f1420bd.png)
連携プラグインは未設定とします。
## IDワークフローの設定
`<tomcat_home>\webapps\`に`idworkflow`フォルダをコピーします。
![pic (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/91a51f7e-fa1a-ff03-b361-88a1914c9fd5.png)
`https://(ホスト名):(ポート)/idworkflow/idwfsetting`にアクセスし、LDAP Managerのローカルユーザでログインします。
![pic (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3e5e1cfe-37ad-d906-13fb-70840eb6da63.png)
次の画面に遷移します。
![pic (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c9732e00-081a-5240-1dce-671dce72b31e.png)
「LDAPサーバ情報」では、LDAPサーバへの接続情報を設定します。
![pic (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/49e1b621-d7f6-b2b0-bd34-49a4337bde85.png)
予約エントリ専用LDAPサーバは使用していないのでスキップします。
![pic (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5f49ecf1-6f73-c9c5-6c02-1acc10bab636.png)
「LDAP Manager情報」では、LDAP Managerへの接続情報を設定します。
![pic (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ee1c3418-3ab9-a151-86c1-9736640ea1e7.png)
「データベース情報設定」では、主にIDワークフロー用に作成したデータベースへの接続情報を設定します。
![pic (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/acc5fc71-2a96-ee7d-8a03-b72ada1971ef.png)
「メール情報」は使用しないため未設定としました。
![pic (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c36b9b52-b083-2e89-d246-b3e9300d0fb4.png)
「ディレクトリ暗号化バージョン」はLDAP Managerの同設定に合わせます。
![pic (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6b78ed38-da14-8ecf-2f92-0fbe4cc460d1.png)
「ログイン権限情報」はデフォルト（= 全ユーザが管理者権限）とします。
![pic (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e319d060-3c38-507e-b410-6fd48090952c.png)
「多言語設定」は未設定としました。
「ユーザ情報」では、ログイン時や申請書などに表示するユーザ情報について設定します。
`manager`属性に設定されているユーザが承認者に、`secretary`属性に設定されているユーザが代理承認者となります。
また、`businessCategory`属性が可変パラメータとして申請書等に埋め込めるようになりました。
![pic (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/aa6671a1-6529-fee8-0626-77d4a955b109.png)
「グループ情報」は一旦未設定とします。
![pic (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2cc1726d-a781-ba0e-aa84-cc0acc768921.png)
「予約エントリ情報」には予約エントリに関する情報を設定します。
今回、予約エントリ用のオブジェクトクラスにはIDワークフローの申請書番号が入る`uid`、反映日が入る`applydate`、LDAP変更種別が入る`changeType`とユーザ情報に関する属性のみ定義しているので、ここでは必須となる3つの属性のみの設定としました。
![pic (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0aa1186a-4b29-cf6d-5034-bf940de61ee0.png)
「共通表示情報」では一覧表示の制御が可能です。（今回はデフォルト）
![pic (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6c2124ff-3164-ef24-81dc-8d5513f4050b.png)
「ユーザ選択画面情報設定」では、申請書の対象者選択時などに見る画面に表示する項目の設定や、各フィルタの設定が可能です。
![pic (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fc4fe909-534f-9038-399b-940e5b9461dc.png)
「申請書検索画面情報」では、申請書検索画面の検索条件を設定できます。
![pic (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/189c0f55-6cdc-a811-56c8-87236b860551.png)
「CSVインポート機能」では、CSVインポート時のCSVファイルの書式などについて設定できます。
![pic (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/cf91b2a3-5535-7155-9248-5651581e9afc.png)
「操作制御」からはIDワークフローの各動作についての制御が可能です。
削除ボタンを「削除」、期間代理承認、ダイナミック承認者リスト、一括承認を「使用する」としました。
![pic (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/207e5929-f344-b647-d9f0-72d133952e5f.png)
「その他」の設定からは添付ファイルの一時保存先やCookieの有効期限、日付項目のプルダウンメニューで表示する最大値、User Agent判定文字列の設定が可能です。
![pic (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1c8fbdec-105a-283e-55b2-432d7d6bb85d.png)
![pic26-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/f4d62d0a-da2d-d094-fb45-e93aaab2cbe3.png)
User Agent判定文字列を持つUAからアクセスすると、モバイル版のページが表示されます。
![スクリーンショット 2024-12-24 151332.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/29162671-db9b-8e6e-6747-2ca6c8b655ed.png)
「特権管理情報」の設定は「特権管理パック」プラグインが別途必要となるため行いませんでした。
![pic (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bf572dc5-8756-c94a-d5b8-a9fe0bc5e402.png)
「外部接続データベース情報」および「外部接続LDAP情報設定」では、申請書の項目に埋め込みたい・連携させたい情報を取得するDB/LDAPの情報を指定できます。
![pic (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/44ae2781-c5bd-8c0b-835b-ce2cbb33f365.png)
![pic (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/324c7e69-9454-d6cb-93ff-74442b74bbac.png)
## 
これでIDワークフローの初期設定は完了です。
[次の記事](https://qiita.com/ahra_/items/6740277e930364bfaf36)では、IDワークフローを利用するための設定・検証を行います。