デジタル署名認証

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

    1. デジタル署名認証は、テンプレート認証方式の一種です。ポータルにログインし、URLを取得していても、デジタル署名がなければアクセスができません。デジタル署名認証に成功した後、テンプレートへのアクセスが可能になります。そうでない場合、アクセス権限がありません。

    2. この認証方式は、強い権限コントロールを必要とするシステムに適切です。

    3. 認証のプロセスは下図のようになります。

     

    注意:2019-05-20以降のJARファイルへとアップデートすると、いままでのデジタル署名のTokenが無効となります。新バージョンのJARファイルから、新たにfine_digital_signatureを作成しなければなりません。

    二.デジタル署名認証の有効化

    1.認証を有効にし、テンプレートを選択

    [テンプレートの管理紹介]の第三節を参考してください。テンプレート認証を有効にすると、すべてのテンプレートが要認証となります。

    2.デジタル署名設定

    1.[システム]-[テンプレート管理]-[グローバル設定]でデジタル署名認証をオンにします。

    2.デジタル署名認証を有効にすると、テンプレート[/view/report?viewlet=***.cpt]にアクセスする時、URLのQueryStringまたはリクエストヘッダーで、認証サーバーから発行されたデジタル署名を添付します。パラメータでは[fine_digital_signature]で、urlの書式では、[/view/report?viewlet=***.cpt&fine_digital_signature=値]です。

    3.デジタル署名認証を有効にした後、デジタル署名の暗号鍵を設定し、fine_digital_signatureをコンパイルしなければなりません。ここでは123456とします。

     4.[保存]を押して、設定を終了します。

    3.デジタル署名の作成

    1.暗号鍵に対応するfine_digital_signatureの数値を取得します。ここではGettingStarted.cptを例にします。

    2.最初にJava環境とIDEツールを構築し、Javaファイルを作成します。%FR_HOME%\webapps\webroot\WEB-INF\libに位置しているfine-core-10.0.jar、fine-third-10.0.jarを新規プロジェクトのlibraryにコピーします。

    3.以下のコードを新しいファイルにコピーします。実際の状況に従って第10-11行のデジタル署名のテンプレートと暗号鍵を編集してください。

    import com.fr.cert.token.JwtBuilder;
    import com.fr.cert.token.Jwts;
    import com.fr.cert.token.SignatureAlgorithm;
    import java.util.Date;
    public class test {
        public static void main(String[] args) {
            //Signature valid time
            long validTime = 30 60 1000;
            //Signature content: use relative path
            String path = "GettingStartedEN.cpt";
            String key = "123456"//Key set in the platform
            //Generate fine_digital_signature
            String fine_digital_signature = createJwt("""", path, validTime, key);
            //Output fine_digital_signature
            System.out.println(fine_digital_signature);
        }
        private static String createJwt(String issuer, String id, String subject, long validTime, String key) {
            //Generate value of fine_digital_signature
            SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
            Date currentTime = new Date();
            Date expirationTime = new Date(currentTime.getTime() + validTime);
            JwtBuilder builder = Jwts.builder()
                    .setIssuer(issuer)
                    .setSubject(subject)
                    .setIssuedAt(currentTime)
                    .setExpiration(expirationTime)
                    .setId(id)
                    .signWith(signatureAlgorithm, key);
            return builder.compact();
        }
    }

    4.作成された数値をコピーします。

     

    4.効果を確認

    1.ここでは、http://localhost:8075/webroot/decision/view/report?viewlet=GettingStartedEN.cptを例にします。アクセス権限がありません。

    2.URLの最後に[&fine_digital_signature=前節で作成した数値]を追加して再度アクセスすると、テンプレートを閲覧できるようになりました。

    三.リモートサーバのテンプレートのプレビュー

    2020-08-03以降のJARファイルでは、FineReportデザイナからデジタル署名認証が有効のリモートサーバにアクセスして、テンプレートをプレビューすることが可能になりました。

    注意:テンプレートプレビューのURLは、リモートアクセスユーザがログアウトする度に失効となります。つまり、リモートサーバとのアクセスが途切れると、テンプレートプレビューURLを使って直接閲覧することが出来なくなります。


    Attachment List


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