一.概要
1.バージョン
帳票サーババージョン | プラグインバージョン | SAML バージョン | 機能変動 |
---|---|---|---|
11.0 | V1.0.1 | 2.0 | - |
11.0 | V1.0.2 | 2.0 | 新しい設定項目[デバックモード有効]を追加します 詳細は本文第3章第2節を参照してください |
11.0 | V1.0.3 | 2.0 | フィールドの入力完全性検証機能を新規追加します デフォルトで[SAML認証のリクエストをスキップ-ログインページ]を有効化します |
11.0 | V1.0.8 | 2.0 | FineReportからログアウトする際に、アカウントが認証サーバから同期してログアウトする機能を追加します |
11.0 | V1.1.1 | 2.0 | 認証サーバからログアウトする際に、アカウントがFineReportから同期してログアウトする機能を追加します [ユーザ名一致ルール]を追加し、解析されたアカウントを大文字または小文字に変換してからポータルユーザと照合する機能をサポートします |
2.機能概要
ユーザは SAML 認証を通じてFineReportポータルにログインする必要がある際、本文では SAML SSO プラグインの設定方法を提供します。
ユーザは SAML SSO プラグインをダウンロードすることで、コード不要で、簡単かつ迅速に SAML 認証を通じFineReportポータルへのログインを実現できます。
注意:リモート設計時はSAML認証を使用せず、デフォルトで自動的にログインできます。
二.プラグイン紹介
1.プラグインのダウンロード
弊社のスタッフに連絡し、プラグインのパッケージを取得します。
サーバおよびデザイナでのプラグインインストール方法については、それぞれ以下のヘルプドキュメントを参照してください:「サーバプラグイン管理」、「デザイナプラグイン管理」
2.設定画面の概要
プラグインは即時に有効になりますので、プラグインをインストールした後、FineReport システムを再起動する必要はありません。
スーパー管理者がポータルにアクセスし、[システム]-[システム管理]をクリックすると、[SAML-SP設定]画面に入ります。
注意:以下の点にご注意ください:
• 設定画面に入るためには、[システム]を管理する権限が必要です。
• ホットディプロイが可能で、プラグインをインストールしてからすぐに使用できます。
• 設定を変更した後はプロジェクトを再起動する必要がありません。
三.操作手順
1.SAML SSOの有効化
[SAML SSO有効]ボタンをクリックします。以下の図を参照してください:
2.SAML 設定
設定項目を入力した後、[保存]ボタンをクリックする必要があります。以下の図のように:
注意:誤り設定による不具合の発生を防止するため、SSO機能の有効化には全ての設定項目を正確に完成する必要があります。未完成な設定項目がある場合、SSO設定は保存できません。以下の図のように:
各設定項目の説明は以下の表をご参照ください:
設定項目 | 説明 | タイプ |
---|---|---|
SAML SSO有効 | クリックすることで SAML SSO 機能を有効化できます。 有効後、Filterフィルターはロードされます。ユーザが元のFineReportシステムのURLにアクセスする時、SSO機能は自動的にトリガーされます。 注意:再起動は不要です。 | - |
デバッグモード有効 | クリックすることでプラグインのデバッグモードを有効化できます。 有効化後、SAML SSOの過程で収集されたアサーション情報が、fanruan.logのerrorレベルのログに出力されます。 注意:通常は有効化しないことを推奨します。このモードはプラグインのデバッグ目的に限定してください。有効化すると、ログにアサーション内容が出力され、アカウント、メールアドレスなどの情報が含まれる可能性があります。 | ‐ |
IDPメタデータ | IDPメタデータは、認証ツールによって提供される情報を入力してください。 通常、XML形式のページであり、ここにはそのページのアドレスを入力する必要があります。 | 必須 |
IDP固有識別子 | 認証ツールによって提供されるIDP固有識別子を入力してください。 推奨取得方法:IDPメタデータ内で「entityID」というキーワードを探し、その後ろに記載されている URL がIDP固有識別子です。 | 必須 |
IDP SSOアドレス | フィルターがジャンプするURLを入力してください。 異なるIDPでは取得方法が異なるため、実際の状況に応じて操作してください。 | 必須 |
IDP公開鍵 | IDPがアサーションを送信する際に使用する暗号化公開鍵を入力してください。 推奨取得方法:IDPメタデータ内で「ds:X509Certificate」というキーワードを探し、その後ろに記載されている文字列が公開鍵です。 | 必須 |
ユーザ名マッピング | この項目は補助機能であり、必須ではありません。 IDPユーザ連動の他の属性フィールドを使用して SSO を実現することができます。デフォルトまたは空の場合は、IDPから返される「nameid」フィールドが使用されますが、他のフィールド(例:username、emailなど)に設定することも可能です。 | 任意 |
ユーザー名一致ルール | 「デフォルト一致」、「大文字一致」、「小文字一致」の3つのオプションがあり、デフォルト値は「デフォルト一致」です。 デフォルト一致:解析されたアカウントをそのまま使用して、ポータルユーザとマッチングし、 SSO を行います。 大文字一致:解析されたアカウントを大文字に変換してから、ポータルユーザとマッチングし、 SSO を行います。 小文字一致:解析されたアカウントを小文字に変換してから、ポータルユーザとマッチングし、 SSO を行います。 | 必須 |
SP固定識別子 | サービスプロバイダーの識別子を入力してください。自分で設定すればよいです。 | 必須 |
SP既定ジャンプURL | FineReportプロジェクトのアクセスパスを入力してください。URLは「/decision」までです。 例:https://testlocalhost:8443/webroot/decision | 必須 |
SP証明書 | 暗号化に使用する証明書をアップグレードしてください。 crt、cer、pem形式の証明書をサポートしています。 注意:こちらの証明書は暗号化にのみ使用されます。証明書を自分で生成するか、証明書サービスプロバイダーから取得することができます。また、デフォルトの証明書を使用することも可能です: | 必須 |
SP秘密鍵 | 秘密鍵ファイルをアップロードしてください。 key形式の秘密鍵をサポートしています。 注意:[SP証明書]でドキュメントに提供されたデフォルトの証明書を使用する場合、ここでは対応するkeyファイルを使用する必要があります: | 必須 |
メタデータXMLファイル生成 | ボタンをクリックすると、サービスプロバイダーで使用されるMetaData.xmlファイルをダウンロードできます。 MetaDataファイルを認証サービスにインポートすると、新しいSAMLエンティティが自動的に生成されます。 もしSPに関連する5つの属性(IDP公開鍵、SP固有識別子、SP既定ジャンプURL、SP証明書、SP秘密鍵)が空欄の場合、「関係の情報を正確に入力してください」というメッセージが表示されます。 | ‐ |
SAML SLO有効 | SAML SLO機能を有効化するかどうかを選択してください。 有効化後、[SAML SLO有効]の設定項目が表示されます。 | 任意 |
SAML SLO URL | IDPのAPIを入力してください。これにより、FineReport をログアウトする際に IDP も同時にログアウトできるようにします。 例: http://localhost:8080/auth/realms/FineReport/protocol/openid-connect/logout?redirect_uri=http://localhost:8075/webroot/decision/login では パラメーターの説明: 「http://localhost:8080/auth/realms/FineReport/protocol/openid-connect/logout」 はIDPのログアウトAPI部分です。 「?redirect_uri=」の後にはログアウト後にジャンプ先を指定してください。FineReportのログインページに設定することを推奨します。 | 任意 |
SAML認証のリクエストをスキップ‐H5リクエスト | H5リクエストを許可するかどうかを制御します。 有効化すると、H5はSAML認証を必要としません。有効化しない場合は、SAMLでのログインのみが可能です。 | 任意 |
SAML認証のリクエストをスキップ‐ログインページ | 有効化すると、ポータルのログインページを使用してログインできます。 注意1: この設定はデフォルトで有効化されています。 注意2: 有効化しない場合、SAMLでのみログインが可能であり、SAML SLO が有効化されていない場合、ポータルから手動でログアウトすることはできません。有効化すると、ログアウト時にFineReportの元のログインページにジャンプされます。 注意3: シングルサインオンをテストする際は有効化することを推奨します。設定が完了し、元のプラットフォームのログインページを使用する必要がない場合は、この設定を無効化してください。そうしないと、元のプラットフォームのログインエントリが保持され、アドレスは元のURL+/loginになります(例:http://localhost:8075/webroot/decision/login)。 | 任意 |
カスタムリクエスト許可 | 許可するリクエストをカスタマイズし、異なるリクエストは「;」で区切ります。リクエストパスにはワイルドカード文字を使用できます。フィールド値の例:/webroot/decision/t*;/webroot/decision/map/edit | 任意 |
注意: SAMLログインのみ設定し、SAMLログアウトを設定していない場合:
• [ログインページ]を有効化していない場合: 右上の[ログアウト]ボタンをクリックしても、ブラウザをリロードするとログアウトされません。
• [ログインページ]を有効化している場合: 右上の[ログアウト]ボタンをクリックすると、管理ポータルのデフォルトログインページに強制的にジャンプされますが、実際には管理ポータルからログアウトしません。http://ip:ポート/プロジェクト名/decision に直接アクセスすると、以前のユーザのログイン状態が表示されます。
3.SAML SSO の無効化
管理者がプラットフォームにログインし、[管理システム]-[システム管理]-[SAML-SP設定]をクリックします。[SAML SSO有効]のボタンを無効化してから、[保存]をクリックします。以下の図を参照してください:
四.応用事例-AzureADでSAML SSOを実現
注意:AzureADを使用する時(例えばAzureADのMy appsとFineReportシステムのSSO)、FineReportシステムをHTTPSアクセスにする必要があります。HTTPSの設定は以下のドキュメントを参照してください:「SSL 証明書を配置して HTTPS アクセスを設定」
1.基本的な SAML 構成を入力
1.1識別子(エンティティID)の入力
この項目はカスタマイズ可能です。本ドキュメントではスタッフ名「jade」を入力します。
1.2応答URL(Assertion Consumer Service URL)の入力
この項目には、FineReportプロジェクトのアクセスパス(末尾は「decision」まで)/sso/saml/acsを入力する必要があります。例:https://localhost:8080/webroot/decision/sso/saml/acs
1.3ログインURLの入力
この項目は Azure AD 内で必須項目となり、Azure ADから開始されるシングルサインオンを実行するために使用します。Azure ADからFineReportサーバへのシングルサインオン(例: Azure ADのMy AppsからFineReportサーバへのシングルサインオン)を実行する場合、まずFineReportプロジェクトをHTTPSアクセスに設定する必要があります。HTTPSアクセスの設定については、「SSL 証明書を配置して HTTPS アクセスを設定」を参照してください。
FineReportシステムが既にHTTPSアクセスに設定されている場合、ここにはFineReportプロジェクトのアクセスパスを直接入力します。例:
https://localhost:8080/webroot/decision
このようなシーンが需要のない場合、任意のHTTPSリンクを入力できます。
1.4必須項目の入力が完成したら、[保存]ボタンをクリックします。
2.FineReport管理ポータルでの設定項目を完成
FineReportでの設定項目 | 対応するAzureAD情報 |
---|---|
IDPメタデータ | アプリのフェデレーションメタデータ URL ![]() |
IDP固有識別子 | Azure AD 識別子 |
IDP SSOアドレス | ログイン URL |
IDP公開鍵 | 証明書(Base64)をクリックしてダウンロードし、ダウンロード後にメモ帳で内容を確認してください |
SP固定識別子 | 上記の第4章第1節の第1項 と同様に、カスタマイズした値を使用します |
SP既定ジャンプURL FineReportプロジェクトのアクセスパスを入力し、URLの末尾は「/decision」までにします | / |
SP証明書とSP秘密鍵のアップロード ここではSAMLメッセージの暗号化にのみ使用されます。暗号化機能に使用できる任意の証明書をアップロードしてください | / |
デフォルトで「SAML認証のリクエストをスキップ‐ログインページ」を有効 無効にすると、SAMLを通じてのみログインでき、SAML SSO が有効でない場合、手動でポータルからログアウトすることはできません。有効にすると、元のログインページURL+/loginにアクセスすると、FineReportの元のログインページにスキップされます 注意:テストシングルサインオンを設定する際には有効にすることをお勧めします。設定が完了し、元のプラットフォームログインページを使用する必要がない場合は、この設定を無効にしてください。そうしないと、元のプラットフォームログインエントリが残り、アドレスは元のURL+/loginになります。例:http://localhost:8075/webroot/decision/login | / |
3.効果の確認
下図のように、FineReportシステムのURLにアクセス(例えばhttps://testlocalhost:8443/webroot/decision)すると、SAML SSO機能が有効になります。
既にログインしたユーザがログアウトすると、システムのログイン画面(例えばhttps://testlocalhost:8443/webroot/decision/login)に戻ります。
五.例 - ADFS
1.ADFSの設定
1.1ADFSを開き、[Start]-[Administrative Tools]-[ADFS Management] を選択し、[Relying Party Trusts] フォルダに移動します。
1.2[Action]-[Add Relying Party Trust] を選択します。
1.3[Start]を選択して、[Add Relying Party Trust Wizard] を起動します。
1.4[Select Data Source] ウィンドウを開き、[Import data about the relying party from a file] を選択し、プラグイン設定ページからアップロードした metadata.xml ファイルを選択して、[Next] をクリックします。
1.5[Next] を選択して、[Configure Multi-factor Authentication Now?] の確認ウィンドウをスキップします。
1.6[Choose Issuance Authorization Rules] ウィンドウを開き、[Permit all users to access this relying party] を選択し、[Next] をクリックします。
1.7 [Ready to Add Trust] ウィンドウ:
[Encryption] をクリックして、FineBIサーバーから [SP Certificate](SP証明書)をアップロードします。[Advanced] をクリックして、[SHA-1] に設定します。
1.8[Ready to Add Trust] ウィンドウを開き、[Next] をクリックします。
1.9[Finish] ウィンドウを開き、[Open the Edit Claim Rules dialog for this replying party trust when the wizard closes] をチェックして、[Close] をクリックします。
もしウィザード終了時に [Edit Claim Rules] ダイアログが表示されない場合は、ユーザーが設定した [Relying Party Trust] 名称を右クリックして、[Edit Claim Rules...] を選択します。
1.10[Edit Claim Rules] ダイアログを開き、[Add Rule] を選択します。
1.11 [Select Rule Template] ダイアログを開き、[Choose Rule Type] ドロップダウンリストから [Send LDAP Attributes as Claims] を選択して、[Next] をクリックします。
1.12[the Configure Rule] ダイアログを記入します:
• [Claim rule name] 欄に [UseridentiferToNameID] を入力します(カスタマイズ可能)。
• [Attribute store] 欄で [Active Directory] を選択します。
• [LDAP Attribute] 欄で [SAM-Account-Name](またはアカウントの任意の属性)を選択します。
• [Outgoing Claim Type] 欄に [Name ID] を入力します。
注意:アカウントマッピングフィールドは同じ値に設定する必要があります。一部の ADFS バージョンでは、Name IDに限定されず、カスタム値の使用が許可されています。この設定はプラグイン設定内のアカウントマッピングと一致させる必要があります。
1.13[Finish] をクリックします。
2.よくある問題及び解決策
注意:V1.0.2 バージョンでデバッグ機能が追加されました。デバッグが不要な場合は、ボタンをオフにしてください。問題が発生した場合は、技術サポートに連絡してデバッグ機能を使用したトラブルシューティングを依頼してください。
AD FS の正しい XML 応答には Name 属性が含まれます。正しい形式は以下の通りです:
......
<AttributeStatement>
<Attribute Name="Name ID">
<AttributeValue>username@fanruan.com</AttributeValue>
</Attribute>
</AttributeStatement>
......
2.1ファイル内で NameID が見つからない
./logs/fanruan.log
~ https-openssl-nio-443-exec-16 ERROR [standard] No name id found in Document.
~ com.onelogin.saml2.exception.ValidationError: No name id found in Document.
考えられる原因:
1.[Outgoing Claim Mapping] が設定されていません。
2.一部の ADFS バージョンでは、[Outgoing Claim Mapping] に「Name ID」を含める必要があります。
2.2XML に [Name] フィールドが返されない
「Name」フィールド(属性名)が ADFS から返された XML に含まれていません。
./logs/fanruan.log
~ http-nio-37799-exec-35 ERROR [standard] null
~ java.lang.NullPointerException: null
考えられる原因:
1.SP の SSL 証明書が ADFS にアップロードされていません。
2.ADFS の暗号化タイプが [SHA-1] に設定されていません。
2.3一致するアカウントが見つからない
ADFS から返された XML に [Name] フィールド(属性名)が存在しますが、アプリケーションへのログインプロセスで認識できません。
./logs/fanruan.log
~http-nio-37799-exec-12 ERROR [standard] No matching user name found!
考えられる原因:
SAML プラグイン内の [Username Mapping] と [Outgoing Claim Type] の設定値が異なっています。
2.4アカウントが存在しない、またはパスワードが間違っている
ADFS から返された XML に 「Name」フィールド(属性名)が含まれているが、ログインが成功しません。
./logs/fanruan.log
~http-nio-37799-exec-23 WARN [standard]
com.fr.decision.webservice.exception.login.UserLoginException : User not exist, or wrong password!
2.5認証サーバからログアウト後もポータルがログアウトしない
問題現象: ユーザが認証サーバからログアウトしても、ポータルが同期してログアウトされません。
解決策: プラグインを 1.0.8 以上のバージョンにアップグレードしてください。