一.概要
企業は多数の社員を持っており、人員の異動も頻繁に発生されています。ユーザの情報は常に変動しているので、手動で追加したり変更したりすると、手間が多いです。FineReportのユーザデータセット同期機能で、ユーザを一括管理出来ます。
この機能を使うことで、プラットフォームユーザとデータベースに保存されたユーザのデータが自動で同期され、手動で管理する手間がなくなります。同期頻度を設定し、データソースにおける変化し続けているデータをプラットフォームに同期します。
プラットフォームのユーザソースは、1点のみサポートできます。
二.ツリー構造のないユーザリストを同期
ツリー構造のないユーザリストとは、親部署と子部署の分別がない、同レベルの部署をインポートすることです。
1.ビルトインデータセットの用意
1.ユーザ情報のテーブルを用意します。
2.ここでは、FRDemoデータベースにおけるuserinfo表を例にします。表の内容は下図の通りです。
データセット同期を設定するとき、[ユーザID]、[氏名]、[パスワード]は必須項目ですが、同じフィールドを選ぶことが出来ます。このように
ユーザ情報の表には、少なくとも[ユーザID]または[氏名]を記入する必要があります。
「3.同期データセットを配置」で詳しく紹介しますが、記入することができるフィールドはあわせて8点あります。これらの情報も、あらかじめ用意しておくことができます。それぞれユーザid、氏名、パスワード、部署名称、役職名称、役割名称、スマートフォン、Eメールであります。

3.サーバデータセットにインポートします。
4.ユーザリストの内容は、サーバデータセットからインポートしなければならないので、この表をサーバデータセットにインポートしておきます。
5.ここではポータルを例にします。管理者がポータルにログインして、[システム管理]-[データ接続]-[サーバデータセット]に入って、[SQLデータセット]を作成します。データセット名を[Userinfo]にし、データ接続からの を[FRDemo]にします。SQL文は以下の通りです。
6.右側でデータを確認できます。確認が終わったら、[保存]をクリックします。


2.ユーザーを同期
1.[ユーザ管理]-[すべてのユーザ]に入り、[ユーザーを同期する]をクリックします。下の画像の通りです。

2.ユーザ更新設定のウィンドウが表示され、どれかを選んで[OK]をクリックします。下の画像の通りです。 
3.二つの方式について詳しく説明します。
注意:データセットから同期するとき、二つの方式は、いずれでも[役割]が削除されません。
3.同期データセットを配置
[OK]をクリックして、下図のように同期データセットを設定する画面に入ります。ヒントを必ずご確認ください。

ここでは、項目ごとに説明します。
3.1.同期頻度
サーバデータセットから同期する間隔。ここで設定した時間の通りに同期されます。つまり、同期頻度を設定し、データソースにおける変化し続けているデータをプラットフォームに同期します。既定では、43200秒としています。
注意:同期頻度を非常に高く設定すると、バックグラウンドで同期が繰り返され、ファイルの量が嵩みます。
3.2.ユーザ編集可能
2020-06-08及びそれ以降のJARファイルに導入された機能です。既定ではオフにしていますが、オンにする場合に起こる変化は、下の表の通りです。
ユーザの身分 | 説明 |
スーパー管理者 | 1.2度目の同期から、すでに存在しているユーザの氏名、パスワード、スマートフォン、Eメールが更新されません。 2.すでに存在しているユーザの氏名、パスワード、スマートフォン、Eメールを編集できます。役割を編集できません。 3.スーパー管理者は、[アカウント設定]で氏名、パスワード、スマートフォン、Eメールを編集できます。 4.ログインページで[パスワードをお忘れの方はこちら]機能を使用できます。 |
サブ管理者 | 1.権限あるユーザの氏名、パスワード、スマートフォン、Eメールを編集できますが、役割を編集できません。 2.ログインページで[パスワードをお忘れの方はこちら]機能を使用できます。 3.サブ管理者は、[アカウント設定]で氏名、パスワード、スマートフォン、Eメールを編集できます。 |
一般ユーザ | 1.同期されるユーザは、[アカウント設定]で氏名、パスワード、スマートフォン、Eメールを編集できます。 2.ログインページで[パスワードをお忘れの方はこちら]機能を使用できます。 |
このチェックボックスをオフにしている場合、ポータルで直接にユーザ情報を編集することができなくなり、サーバデータセットで修正するのみになります。

3.3.サーバデータセット
ユーザ情報を置いてあるサーバデータセットを選びます。つまり、「1.ビルトインデータセットの準備」の節で新規作成したUserinfoデータセットです。
ポータルユーザのサーバデータソースは、1点のみサポートできます。複数のデータセットを使うことが出来ません。
サーバデータセットを切り替えると、同期情報がクリアされます。

3.4.ユーザ情報のフィールド
既定では、[ユーザー重複確認フィールド]における8点のフィールドがユーザ情報に関係あり、一々データセットのフィールドと対応します。それぞれユーザid、氏名、パスワード、部署名称、役職名称、役割名称、スマートフォン、Eメールであります。
注意:2019-12-05及びそれ以降のJARファイルでは、Eメールが「#」と「&」をサポートできるようになりました。
注意:同期が終わったあと、ユーザのパスワードが、バインドされた[パスワード]のフィールドになります。

3.5.ユーザー重複確認フィールド
[ユーザー重複確認フィールド]にはの二通りの確認方式があります。それぞれユーザid、氏名、パスワード、部署名称、役職名称、役割名称、スマートフォン、Eメールに適用できますので、8の項目に分けられます。

ここで詳しく説明します。
ユーザー重複確認フィールド
| 同期のロジック | 編集のロジック | 重複のロジック |
---|
名称 | ユーザid | 1.[ユーザ名]が同一しているフィールドを同期 2.システムで[ユーザid]を作成します。 | 1.データセットでユーザのユーザ名を編集すると、ポータルでそのユーザのユーザ名も変わります。ユーザidはランダムで作成されるので、いままでこのユーザに設定した権限項目が失われます。 2.これと同じように、部署、役職、役割の名称をユーザー重複確認フィールドに選択すれば、それを編集する場合、当該部署/役職/役割から継承した権限項目が失われます。 | 1.役職をユーザー重複確認フィールドに選択すれば、違うidを持っているかどうかに関係なく、データベースで名称が同一している役職は、同じ役職と見なされます。例えば、同じ部門に「財務」と名付けられている複数の役職があっても、一つの役職に合併され、それに属するユーザも合わせて表示されます。 2.しかし、違う部門の下にある「財務」の役職は、一つの役職に見なされますが、ユーザは分けて表示されます。 3.ユーザ、部署、役割も以上のロジックと同じです。 |
部署名称 |
役職名称 |
役割名称 |
ID | 役割ID | 1.フィールド[ユーザ名]、[ユーザID]を同期 2.[ユーザID]フィールドは、バインドされたサーバデータセットのIDとなります。 注意:スーパー管理者のIDは、システムから作成されます。 | データセットでユーザのユーザ名を編集すると、ポータルでそのユーザのユーザ名も変わり、権限項目がそのまま継承されます。部署、役割、役職も以上のロジックと同じです。 | 1.ツリー構造のないデータセットでは、役職のIDと名称は一対一かつ重複しない状態でなければなりません。同じIDに複数の名称、または同じ名称に複数のIDを対応させることが出来ません。ユーザ、部署、役割も以上のロジックと同じです。。 2.ツリー構造データセットでは、ユーザ、役職、役割は一対一かつ重複しない状態でなければなりません。ツリー構造データセットでは、部署のIDと名称に制限がありません。 注意:ポータルで役職のIDを確認することができなく、役職の名称のみで区分し、権限項目を配置します。同じ部門に複数の役職IDが同じ名称に対応していると、区分と権限項目の配置が出来なくなります。そこで、以上の制限が掛けられています。 |
部署ID |
役職ID |
役割ID |
以上のフィールド情報は、帳票に内蔵しているFineDBデータベースに保存されています。具体的な位置は以下の通りです。
フィールドの情報 | データベース | テーブル |
---|
ユーザ名、ユーザID | FineDB | fine_user |
役職名、役職ID | fine_post |
部署名、部署ID | fine_department |
役割名、役割ID | fine_custom_role |
3.6.暗号化方式
[組み込みSHA暗号化]と[カスタムパスワード暗号化]の二通りの暗号化方式があります。
組み込みSHA暗号化:旧バージョンのFineReportでは、MD5で暗号化しています。FineReport10.0からMD5とSHA256の二重暗号化となりました。旧バージョンからFineReport10.0までアップグレードする時、アップグレードツールが自動でパスワードをSHA256で暗号化し、パスワードの安全性を強くします。ユーザがインターフェースでパスワードを変更するときも、MD5とSHA256の二重暗号化がなされます。
カスタマイズパスワード暗号化:カスタマイズでパスワード暗号化のクラスを作成し、クラスで暗号化方式を記述する。このクラスは、%FR_Home%\webapps\webroot\WEB-INF\classesに保存されています。
注意:カスタマイズ暗号化方式では、具体的な方式と関係なく、FineReportのAbstractPasswordEncodeクラスを継承しなければならなく、ヘイブンパスワードと暗号文パスワードが一致しているか認証する方法を記入しなければなりません。

4.同期の結果
1.ユーザ同期ウィンドウにおける設定が終わると、[OK]をクリックして、同期結果のページが表示されます。下の画像の通りです。

2.同期が終わると、[ユーザ管理]-[すべてのユーザ]-[同期ユーザー管理]のプルダウンツリーでは、次のように2つのボタンが現れます。下の画像の通りです。

3.ツリー構造のないデータセットを使っているので、部署の間ではツリー構造がありません。[ユーザ管理]-[部署]の状況は下の画像の通りです。

注意:ユーザの同期をすると、[システム]-[システム管理]-[ログイン]における[パスワードポリシー設定]が無効になります。
三.ツリー構造ユーザリストを同期
1.ビルトインデータセットの用意
1.ユーザ情報のテーブルを準備します。ここでは、FRDemoデータベースにおけるuserinfo_tree表を例にします。表の内容は下図の通りです。

ユーザデータセットを同期するとき、サーバデータセットがツリー構造データセットの場合、didが当該部署のidを表し、fidが親部署のidを表します。トップ部署の親部署は空白に設定します。下の図のように、ユーザAnnaのfidフィールドを空白にします。
データセット同期を設定するとき、[ユーザID]、[氏名]、[パスワード]は必須項目ですが、同じフィールドを選ぶことが出来ます。こうして、ユーザ情報の表には、少なくとも[ユーザID]または[氏名]を記入する必要があります。
「3.」で詳しく紹介しますが、記入することができるフィールドはあわせて8点あります。これらの情報も、あらかじめ用意しておくことができます。それぞれユーザid、氏名、パスワード、部署名称、役職名称、役割名称、スマートフォン、Eメールであります。
注意:インストールパッケージにおけるFRDemoデータベースにはこのテーブルがまだ内蔵されていない可能性があります。このファイルをダウンロードして、データベースにインポートしてください。
userinfo_tree.csv
2.サーバデータセットにインポートします。ユーザリストの内容は、サーバデータセットからインポートしなければならないので、この表をサーバデータセットにインポートしておきます。
3.右側でデータを確認できます。確認が終わったら、[保存]をクリックします。


4.右側でデータを確認できます。確認が終わったら、[保存]をクリックします。


2.ユーザーを同期
詳しい内容は、「二.2.ユーザーを同期する」を参照してください。
3.同期データセットを配置
さきほど新規作成したサーバデータセット[Userinfo2]を選び、[二.3.同期データセットを配置]に参考してして同期データセットを設定して、[OK]をクリックします。

4.同期の結果
1.ユーザ同期ウィンドウにおける設定が終わると、[OK]をクリックして、同期結果のページが表示されます。下の画像の通りです。

2.同期が終わると、[ユーザ管理]-[すべてのユーザ]-[同期ユーザー管理]のプルダウンツリーでは、次のように2つのボタンが現れます。下の画像の通りです。

3.ツリー構造データセットを使っているので、部署の間はツリー構造で構築されます。[ユーザ管理]-[部署]の状況は下の画像の通りです。

注意:ユーザの同期をしますと、[システム]-[システム管理]-[ログイン]における[パスワードポリシー設定]が無効になります。
四.同期の結果をクリア
データセットから同期することをやめる場合、[ユーザ管理]-[すべてのユーザ]ページで[ユーザの追加]または[ユーザインポート]を押して、内蔵状態に戻して、同期を閉めることが出来ます。
1.ユーザ追加に切り替える

2.ユーザインポートに切り替える

五.サブ管理者がユーザを追加/導入できない
2020-01-15及びそれ以降のJARファイルでは、ユーザ同期を設定している場合、サブ管理者(ここではJackにします)がポータルの[管理シスタム]-[ユーザ管理]-[すべてのユーザ]に[ユーザの追加]と[ユーザインポート]のボタンがありません。つまり、手動でユーザを追加・インポートできません。
