ユーザデータセット同期

  • 作成者:ayuan0625
  • 編集回数:63次
  • 最終更新:ayuan0625 于 2021-09-22
  • 一.概要

    1. 企業は多数の社員を持っており、人員の異動も頻繁に発生されています。ユーザの情報は常に変動しているので、手動で追加したり変更したりすると、手間が多いです。FineReportのユーザデータセット同期機能で、ユーザを一括管理出来ます。

    2. この機能を使うことで、プラットフォームユーザとデータベースに保存されたユーザのデータが自動で同期され、手動で管理する手間がなくなります。同期頻度を設定し、データソースにおける変化し続けているデータをプラットフォームに同期します。

    3. プラットフォームのユーザソースは、1点のみサポートできます。

    二.ツリー構造のないユーザリストを同期

    ツリー構造のないユーザリストとは、親部署と子部署の分別がない、同レベルの部署をインポートすることです。

    1.ビルトインデータセットの用意

    1.ユーザ情報のテーブルを用意します。

    2.ここでは、FRDemoデータベースにおけるuserinfo表を例にします。表の内容は下図の通りです。

    • データセット同期を設定するとき、[ユーザID]、[氏名]、[パスワード]は必須項目ですが、同じフィールドを選ぶことが出来ます。このように

    • ユーザ情報の表には、少なくとも[ユーザID]または[氏名]を記入する必要があります。

    • 「3.同期データセットを配置」で詳しく紹介しますが、記入することができるフィールドはあわせて8点あります。これらの情報も、あらかじめ用意しておくことができます。それぞれユーザid、氏名、パスワード、部署名称、役職名称、役割名称、スマートフォン、Eメールであります。

    3.サーバデータセットにインポートします。

    4.ユーザリストの内容は、サーバデータセットからインポートしなければならないので、この表をサーバデータセットにインポートしておきます。

    5.ここではポータルを例にします。管理者がポータルにログインして、[システム管理]-[データ接続]-[サーバデータセット]に入って、[SQLデータセット]を作成します。データセット名を[Userinfo]にし、データ接続からの を[FRDemo]にします。SQL文は以下の通りです。

    select from userinfo

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

     

    2.ユーザーを同期

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

    2.ユーザ更新設定のウィンドウが表示され、どれかを選んで[OK]をクリックします。下の画像の通りです。 

    3.二つの方式について詳しく説明します。

    • 既存のユーザーの基本情報のみを更新し、権限を変更しないなど。

      • すでに存在しているユーザは、同期データセットに存在していない場合、このユーザが削除されます。

      • すでに存在しているユーザは、同期データセットに存在している場合(同一のユーザidが存在している場合)、このID・権限を保留します。

      • 同期データセットと[部署]-[役職]が違う場合、[部署]-[役職]が削除されます。

    • 既存のユーザー情報とアクセス許可の設定を消去し、書き換えます。

      • すでに存在しているユーザ、ユーザ権限、部署、役割などを全部削除し、同期データセットから改めてインポートします。

    注意:データセットから同期するとき、二つの方式は、いずれでも[役割]が削除されません。

    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]の二通りの確認方式があります。それぞれユーザ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.サーバデータセットにインポートします。ユーザリストの内容は、サーバデータセットからインポートしなければならないので、この表をサーバデータセットにインポートしておきます。

    • まず、データベースから情報をインポートします。ポータルを例にします。管理者がポータルにログインして、[システム管理]-[データ接続]-[サーバデータセット]に入って、[SQLデータセット]を作成します。データセット名を[Userinfo]にし、[データ接続からのデータ]を[FRDemo]にします。SQL文は以下の通りです。

    select from userinfo

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


    • 次にツリーデータセットを構築します。[ツリーデータセット]を新規作成し、名前を[Userinfo2]にします。[データセットから構築]では[Userinfo_tree]を選びます。[選択したデータセットの親タグフィールドに基づいてツリーを構築します]をオンにします。両方とも[列名]を選び、元のタグフィルダーを[did]にし、親タグフィルダーを[fid]にします。

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

    2.ユーザーを同期

    詳しい内容は、「二.2.ユーザーを同期する」を参照してください。

    3.同期データセットを配置

    さきほど新規作成したサーバデータセット[Userinfo2]を選び、[二.3.同期データセットを配置]に参考してして同期データセットを設定して、[OK]をクリックします。

     4.同期の結果

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


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

    • 今すぐ同期:ここをクリックすると、ユーザデータセットの同期が始まります。

    • 編集:ユーザ同期のウィンドウを開き、ユーザ同期データセットの設定を変更できます。

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

    注意:ユーザの同期をしますと、[システム]-[システム管理]-[ログイン]における[パスワードポリシー設定]が無効になります。

    四.同期の結果をクリア

    データセットから同期することをやめる場合、[ユーザ管理]-[すべてのユーザ]ページで[ユーザの追加]または[ユーザインポート]を押して、内蔵状態に戻して、同期を閉めることが出来ます。

    1.ユーザ追加に切り替える

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

    五.サブ管理者がユーザを追加/導入できない

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


    Attachment List


    Theme: FineReport 管理ポータル
    既に最初
    既に最後
    • Helpful
    • Not helpful
    • Only read