LDAP Managerを使ってみた！ 3-2. 管理者メンテナンス確認・応用編

[前回](https://qiita.com/ahra_/items/04a3ee2db8f0cbd83b5f)の記事では、管理者メンテナンスの基本的な機能を検証するための設定を行いました。
今回は設定した内容の確認と、応用としてロール設定とPDF出力機能を検証します。


## 確認 
### 管理者ユーザメンテナンス
TomcatとLDAP Managerが起動していることを確認し、`http://(ホスト名):(ポート)/admin-mtn-sv`にアクセス。LDAP Managerのリモートユーザでログインします。
![pic (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5193e9a8-9c72-a7b4-e515-219702b92612.png)
すると、このような画面に遷移します。
![pic (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/866bbeea-7f59-179b-46be-12b367ad9305.png)
ここではまず、「管理者ユーザメンテナンス」を選択します。
次の画面に遷移します。
前回、「ユーザメンテナンスロール設定画面」ですべての操作を許可する設定にしたので、その通りに「更新」、「追加」などの操作が表示されていることがわかります。
![pic (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/7c7a34fe-4691-bc3b-6ddd-f3f17f70c5c6.png)
ユーザを追加してみます。
ユーザの追加（編集）画面は、設定した通りRDN属性のユーザID=`cn`の他、「基本情報」タブで英語姓=`sn`、英語名=`givenName`、パスワード=`userPassword`が入力できるようになっています。
![pic (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/07571ffd-a734-8807-eadb-e55ac3a84f19.png)
追加に成功すると、次のような画面になります。
![pic (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/542efd5b-4fe5-909c-f4a3-9b551c4fd4fa.png)
![pic (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0e718725-d735-0c6f-0323-391484ae5e11.png)
このユーザを「編集」すると、同様に英語姓=`sn`、英語名=`givenName`、パスワード=`userPassword`が編集可能になっています。
![pic (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c6c44d70-f5ce-f01b-411d-5978e583201e.png)
![pic (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/86233230-22c9-3a73-3150-441547a65d06.png)
![pic (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3ae35d30-1c17-7b59-3b46-45f8ecae0e08.png)
![pic (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3700052c-9f85-ec98-02ae-6cda8593f672.png)
このユーザを削除しようとすると、アカウント削除方法に「無効」を指定しているので、アカウントの無効化処理が実施されます。
![pic (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/af5fc231-c459-9e38-cdcd-7c7de2712451.png)
![pic (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/21d7090a-1b99-036a-064a-30d646d12d59.png)
無効化されたアカウントは、灰色で表示されるようになり、`exgEnabledFlag`にも`disabled`が格納されていることがわかります。
![pic (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/00f7dcb6-61d8-11f2-767b-3a5f065b4cae.png)
そして、このユーザを復帰させると、画面表示の通り「追加」扱いでユーザがベースDNに復帰します。
![pic (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6cdd4823-3088-b3a2-7443-a04111f4dc69.png)
![pic (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/39273ae2-cbf7-b692-2ffe-3a8dd7bdeee1.png)
![pic (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/23570b4c-e9a9-b128-262e-67af86a8aec1.png)
対象ユーザを指定してCSV出力させると、表示項目の通りのCSVが得られます。
![pic (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/605dd3c4-c594-a406-9845-bc6531551dff.png)
右上「検索画面を表示」をクリックすると、設定どおり検索KEYとしてユーザID=`cn`とLDAPフィルタが使用できるようになっています。
![pic (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0a4b7e08-24f0-6783-5829-d8201e11f77d.png)
ここでLDAPフィルタを選択すると、こちらも設定どおり英語姓=`sn`、英語名=`givenName`で検索ができるようになっています。
![pic (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8d65c355-1605-3393-c3b3-8b93708d29d5.png)
またよく使うボタン「姓名」があり、これを押下すると英語姓=`sn`と英語名=`givenName`のANDのフィルタがセットされるようになっています。
![pic (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/10d63608-93b2-d627-24f2-2b996f5f45f8.png)
### 管理者パスワードメンテナンス
次に、右上「ホーム」をクリックして以下の画面に戻り、「管理者パスワードメンテナンス」を選択します。
次の画面に遷移します。
何も入力せず、「検索」を押下します。（ここの検索設定も英語姓=`sn`と英語名=`givenName`が使用できるようになっています）
![pic (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4d5a4f34-9b6c-d7aa-c4af-9ad8b3f61484.png)
![pic (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/66109f6d-d1ec-de8e-ff3a-c5ee403f5fef.png)
設定どおりの内容で、ユーザ一覧が表示されます。
![pic (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5dea6439-62db-b052-8888-c017d247fe70.png)
user1ユーザに設定されているパスワードでLDAP認証ができることを確認します。
![pic (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/60af2296-a500-6750-a2f6-431eeaff83f3.png)
この後、パスワードを変更します。
![pic (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/7ce8b1af-c3fa-c7f2-3af9-16c1259df679.png)
![pic (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/03ce3c26-211f-a156-9584-c7347b568bcd.png)
パスワードが正常に変更され、新しいパスワードでの認証ができました。
![pic (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c3966be0-3c8d-71e6-51af-bde7e2f22f1d.png)
プラグイン側でのマッピングの設定をしていなくても、`userPassword`属性が更新されることがわかります。
### 管理者グループメンテナンス
次は、「管理者グループメンテナンス」をホームで選択します。
「初回表示時に一覧表示」を許可しているため、グループ一覧表示画面が現れます。
また、検索項目が設定どおりのグループ名=`cn`になっていることがわかります。
![pic (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3368bebd-2203-8637-510b-3f776f6e3c08.png)
まずはグループを追加してみます。
「基本情報」タブには組織単位=`ou`の入力項目があります。
![pic (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5de7c3de-c5ef-13ea-e755-2884cf9f1991.png)
また、「追加情報」タブには職種=`businessCategory`の入力項目があります。
![pic (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/533afefe-fc1b-9144-20b1-9ec571d1e058.png)
登録すると、一覧画面はこのようになります。
![pic (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1001d394-6825-cbfa-a4c5-3af1b283567a.png)
「表示」ボタンを押下して、「グループメンテナンス 参照」画面に移ります。
![pic (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1554a314-6f93-1af4-5d30-98a016325995.png)
「グループメンテナンス 参照」画面の「追加」ボタンでは、子グループの追加が行えます。
![pic (33).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/559d3dc6-88b0-b8bb-9648-608291982e84.png)
追加して「ツリー表示」させると親グループ「グループ1」の子グループとして作成されていることがわかります。
![pic (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/87ed6391-b4af-94e1-9cf9-0ee3736f172e.png)
「編集」ボタンでは自身の情報を編集可能です。
![pic (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/39231c86-9031-5753-cdaf-254b25a18abf.png)
「移動」ボタンではグループエントリの配置先を変更できます。
![pic (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5ebe747e-8a32-0390-dd26-de79aa7acfe6.png)
中央右側、「メンバ編集」ボタンからメンバとなるユーザおよびグループを追加します。
まずはユーザメンバを追加します。
メンバ（ユーザ）の追加を押下すると、次の画面に遷移します。
「検索条件を指定して検索」では、コンポーネントの「メンバ検索設定」で指定した通りの検索項目で検索が実施可能です。
![pic (37).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/527555d8-f1af-b896-e820-ce28b89e8356.png)
「階層から検索」では、ユーザのベースDNからコンテナを辿って階層的にユーザを検索できます。
以下のような階層の場合は、ルート直下からuser1を、kaisou1コンテナ以下からuser2を選択できます。
![pic (38).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ba438889-fb34-eac9-2ea1-ce359540b785.png)
![pic (39).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/245194b7-2550-10d4-03e9-2e1188348ab5.png)
![pic (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/dc2a53b6-365b-60ef-5293-a108cbf4fa2a.png)
2人を追加します。
![pic (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/55a5209a-d41a-2b1f-7a4d-a4f07d1411ff.png)
![pic (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2e891f08-4ac0-d99c-d612-e1443f310098.png)
![pic (43).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2de2bbc5-7a20-b547-ad34-6b41f8cdeba2.png)
メンバを追加すると、特定のユーザを拡張グループメンバに追加できるようになります。
今回は拡張グループメンバを「上長」としているので、以下のメンバ編集画面の「上長」列にチェックを入れて「確定」すると、そのメンバは拡張グループメンバとなります。
![pic (44).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/16a07336-a65c-6c6a-675b-0ebe71d37787.png)
![pic (45).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/eab56466-4889-2770-7fa1-a024e9c9a312.png)
![pic (46).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b6581685-812e-874f-1563-b67f206ce21d.png)
![pic (47).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/31eca526-ec2d-1dea-08f0-e0701d5f2462.png)
次に、グループをメンバとして追加してみます。
事前に任意のグループを作成します。
![pic (48).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e9016b03-3663-41bf-aa46-b4cac563eeb8.png)
メンバの編集画面で、メンバ（グループ）の追加を押下します。
先ほどと同じように、検索条件もしくは階層から検索できます。
![pic (49).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/04472048-e668-4b42-6590-3fd1c3a9da5f.png)
![pic (50).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9e298533-3a8a-e3ba-146f-21f119f7fda0.png)
「子グループの子グループ」グループをメンバに追加します。
![pic (51).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2851768a-27b9-44f9-140d-9af480c4b6a3.png)
![pic (52).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8c51c01f-af53-896a-f86f-b3020dbaa84c.png)
![pic (53).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c073181a-587b-99c6-67db-a1c76ac44594.png)
このようにして、グループをメンバとして追加できます。
![pic (54).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e4a47a30-cb57-879f-29ea-65833c2d4f72.png)
## 応用 - ロールでの権限管理
管理者メンテナンスでは、「ロール」を用いた権限管理が可能です。
ロールは「ユーザメンテナンス」、「パスワードメンテナンス」、「グループメンテナンス」、「アグリゲータアップロード」それぞれに作成し、グループに紐づけます。
また、作成したロールに対してコンポーネントを割り当てることで、操作する対象や表示する内容を制御します。
文面ではわかりにくいと思いますので、実際に検証してみます。
### LDAP Manager 本体側の設定
まずは検証用にリモートユーザを作成します。
![pic (55).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9c40a79b-5a16-3a45-8caf-87cb8b5b4dde.png)
また、リモートユーザが属するグループを作成します。
![pic (56).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/edd2a7dc-2b0e-8044-bb41-8b2cf54781e4.png)
### 管理者メンテナンスの設定
「認証情報」 > 「グループ情報」から、LDAP Manager本体側に追加したグループと同名のグループを作成します。
![pic (57).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/aee9e803-38f3-482e-0633-309369baa62f.png)
次に、「アプリケーション情報」より任意のツールの「コンポーネント情報」に遷移し、「追加」を押下してコンポーネントを追加します。
コンポーネントの設定方法については前回紹介したため割愛します。
![pic (58).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/706c52a1-ce87-28c5-f5f5-d8899b9678ee.png)
![pic (59).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/28ae4837-5b2a-71f6-0c50-00d32e4fbf8b.png)
コンポーネントを設定したら、次はコンポーネントを設定したツールにロールを追加します。
今回はユーザメンテナンスにコンポーネントを設定したので、ユーザメンテナンスにロールを追加します。
紐づける対象とするグループ、コンポーネントを設定します。
その他の設定は前回と同じ方法で設定します。
![pic (60).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e8de1d04-42f7-7f26-9f64-c8e7273fe3cc.png)
![pic (61).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/22522ef3-1562-307f-41a7-e55fb1421d81.png)
「エントリ操作設定」タブにて、許可された操作の数を以下のように大幅に少なくしました。
![pic (62).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/41356eee-820b-9d18-9939-f68324f19670.png)
最後に、「メニュー情報」にてメニューに表示するロールを設定します。
今回は新たにカテゴリを追加してみます。
![pic (63).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e0dfff0f-53c4-6649-bbf5-cedf711e319b.png)
追加したカテゴリにロールを追加します。
![pic (64).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4c8b6107-8e5f-dd59-87bd-6223a4910b76.png)
この設定を保存して、完了です。
### 確認
追加したロールは`rolegroup`グループに紐づいています。
まずは`rolegroup`グループに参加していないユーザ、testuserでログインしてみます。
ここでは、今までと変わりのないメニュー画面が見えています。
![pic (65).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b29a4887-ed73-5b4c-17af-7b8492306aa6.png)
管理者ユーザメンテナンスの操作も、今まで通りすべての操作ができます。
![pic (66).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/36ba565b-6f36-d8fd-6c66-f4a48fa3d5b4.png)
では、roleuserユーザでログインしてみます。
すると設定した通り、「ロール確認用」というカテゴリの下に、「ロール検証用」という名称の項目が表示されるようになります。
![pic (67).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/7e98e731-bd7c-60ca-7bef-c4e036708364.png)
「ロール検証用」を押下してユーザメンテナンス画面に入ると、操作項目がかなり少なくなっていることがわかります。
また、表示項目もコンポーネントの設定どおりで、「ユーザメンテナンス1」コンポーネントの内容と異なることがわかります。
![pic (68).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6ff359e7-c150-e139-a84f-6f4b8d92e059.png)
このようにして、管理者メンテナンスのロールの設定が可能です。
## 応用 - PDF印刷機能
管理者ユーザメンテナンスにはPDF出力という機能があります。
PDF出力機能では、テンプレートに基づいて、指定のユーザ情報をPDF化することが可能です。
この機能は管理者メンテナンスのWebアプリケーションをデプロイしただけでは機能しないので、追加でいくつかの設定が必要です。
まずはテンプレートを作成します。
サンプルを以下に書き換え、`<tomcat_home>\webapps\admin-mtn-sv\WEB-INF\configTool\conf\template\pdf\jpn`に格納しました。
``` PDFtemplete.xml
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
	<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
	<xsl:param name="versionParam" select="'1.0'"/>
	<!-- ========================= -->
	<!-- root element: projectteam -->
	<!-- ========================= -->
	<xsl:template match="exgen-html-print">
		<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
			<fo:layout-master-set>
				<fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
					<fo:region-body/>
					<fo:region-before extent="30mm" display-align="center" />
				</fo:simple-page-master>
			</fo:layout-master-set>

			<fo:page-sequence master-reference="simpleA4">
				<fo:static-content flow-name="xsl-region-before">
					<fo:block text-align="right">

					<!-- ====================================== -->
					<!-- 画像ファイル等のリンクを「file:/」+「画像のフルパス」で記述 -->
					<!-- ====================================== -->
					<!--
					<fo:external-graphic src="file:/C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\admin-mtn-sv\WEB-INF\configTool\conf\template\pdf\jpn\exgenlogo.gif" width="40mm" content-width="scale-to-fit" />
					-->
					</fo:block>
				</fo:static-content>

				<fo:flow flow-name="xsl-region-body">

					<xsl:apply-templates select="exgen-html-user"/>

				</fo:flow>
			</fo:page-sequence>
		</fo:root>
	</xsl:template>

	<!-- ========================= -->
	<!-- child element: member     -->
	<!-- ========================= -->
	<xsl:template match="exgen-html-user">

		<fo:block font-family="MS-Mincho" font-size="12pt" font-weight="bold" space-after="5mm"><xsl:value-of select="systemdate"/></fo:block>

		<fo:block font-family="MS-Mincho" font-size="20pt" font-weight="bold" space-after="10mm">システム利用開始のご案内</fo:block>

		<fo:block-container start-indent="1mm"  font-family="MS-Mincho" font-size="14pt">
			<fo:block>システム利用通知書</fo:block>
		</fo:block-container>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="8.0cm">
						<fo:block font-size="16pt">　</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block font-size="20pt">************************************************</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block font-size="16pt">ユーザID</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="1.0cm">
						<fo:block font-size="16pt">：</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="treat-as-space">
							<xsl:value-of select="cn"/>
						</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block font-size="16pt">英語姓</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="1.0cm">
						<fo:block font-size="16pt">：</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="8.0cm">
						<fo:block white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="treat-as-space">
							<xsl:value-of select="sn"/> 
						</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block font-size="16pt">英語名</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="1.0cm">
						<fo:block font-size="16pt">：</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="8.0cm">
						<fo:block white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="treat-as-space">
							<xsl:value-of select="givenName"/> 
						</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block font-size="16pt">備考</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="1.0cm">
						<fo:block font-size="16pt">：</fo:block>
					</fo:table-cell>
					<fo:table-cell padding="2pt" width="8.0cm">
						<fo:block>
							<xsl:for-each select="description"> 
								<xsl:value-of select="." />
							</xsl:for-each>
						</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="4.5cm">
						<fo:block font-size="20pt">************************************************</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:table width="7cm" table-layout="fixed" border-color="#000000">
			<fo:table-body>
				<fo:table-row font-family="MS-Mincho" font-size="16pt">
					<fo:table-cell padding="2pt" width="8.0cm">
						<fo:block font-size="16pt">　</fo:block>
					</fo:table-cell>
				</fo:table-row>
			</fo:table-body>
		</fo:table>

		<fo:block-container start-indent="1cm"  font-family="MS-Mincho" font-size="12pt">
			<fo:block> 会社名 </fo:block>
			<fo:block>TEL: 000-000-000 </fo:block>
		</fo:block-container>

		<fo:block break-after="page" />

	</xsl:template>

</xsl:stylesheet>
```
フォントファイルを作成するため、Apache FOPと呼ばれるXML-FO（レイアウトと出力を制御する仕様）の実装系のバイナリを[提供サイト](https://xmlgraphics.apache.org/fop/download.html)からダウンロードします。
圧縮フォルダを解凍し、内部の`fop`フォルダを`C:\Program Files`に配置します。
![pic (69).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/25d19fe3-68f5-db01-a34f-895a4f07cab5.png)
`C:\fonts`フォルダを作成します。
`<tomcat_home>\webapps\admin-mtn-sv\WEB-INF\configTool\prepareFontMetrixFile.bat`をエディタで開き、
``` prepareFontMetrixFile.bat
SET CLASS_PATH="%FOP_PATH%\build\fop-2.10.jar;%FOP_PATH%\lib\*"
```
上記部分を修正して保存、バッチを実行します。
すると、`C:\fonts`以下に`ttc`ファイルと`xml`ファイルが生成されているので、これらを`<tomcat_home>\webapps\admin-mtn-sv\WEB-INF\configTool\conf\templete\pdf\fonts`に格納します。
![pic (70).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0fa36041-70d7-81a8-26d6-1f1a86189007.png)
`<tomcat_home>\webapps\admin-mtn-sv\WEB-INF\configTool\conf\template\pdf\fop_ja.xconf`を開き、要素`font-base`を以下の通りに変更します。
``` fop_ja.xconf
<font-base>file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%2010.1/webapps/admin-mtn-sv/WEB-INF/configTool/conf/template/pdf/fonts</font-base>
```
最後に、管理者ユーザメンテナンスロール設定より、PDFダウンロードを「許可する」設定にし、テンプレートファイル名を変更して設定は完了です。
![pic (71).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2191322c-7f63-88e1-10b1-f11188485216.png)
この状態で管理者メンテナンスにログインし、管理者ユーザメンテナンスにてユーザを選択した状態で「PDFダウンロード」を押下、ダウンロードします。
![pic (72).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/95aeb870-9de2-c8d7-71d9-37e79c2ae4fd.png)
![pic (73).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/711a1c11-8aa1-9980-a258-2de81805f642.png)
## まとめ
管理者メンテナンスの主要機能についてのご紹介でした。ここでご紹介したもの以外に、LDAPやDBからの情報を基に入力補助を行う機能や、ユーザ情報CSVファイルを「アグリゲータレシーバ」にアップロードする機能などが管理者メンテナンスには存在します。
[次の記事](https://qiita.com/ahra_/items/2920657adb52b5e6f089)では、利用者自身がユーザ情報を操作できる **利用者プロファイルメンテナンス** について検証します。