反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

B14-02 密碼加密設定

一、概述

  1. 在平台內建進行使用者身份驗證的時候,密碼存在資料庫(FineReport 內建資料庫 FineDB 或者其他資料庫)中,認證時使用者輸入的密碼與資料庫中密碼相同則認證通過,若資料庫被破解了則對系統造成威脅,為加強系統安全性,FineReport具備了密碼加密功能。

  2. 在進行手動新增使用者的時候,使用密碼加密功能。資料庫中存的是密文,輸入的密碼需要進行加密才能和資料庫中的密文進行匹配,加大破解難度,提高系統安全性。

二、實現原理

1
設定方法。
  1. 登入決策平台,點選【管理系統】→【使用者管理】→【所有使用者】→【同步使用者】。

  2. 彈出【使用者升級設定】面板,直接點選【確定】,跳轉到【同步使用者】面板。

实现原理-设置方法2.png

2
密碼加密方式分類。
  1. 密碼加密功能分為:內建 SHA 加密、自定義密碼加密。

  2. 內建 SHA 加密:加密方式已經封裝了。

  3. 自定義密碼加密:需要將自定義的密碼驗證類(包含了加密方法)放在報表伺服器如/webapps/webroot/WEB→INF/classes下,勾選自定義密碼加密,並指向自定義的密碼驗證類。

3
原理。
  1. 設定了加密規則,encodePassword 方法中會先對使用者輸入密碼進行加密轉換,再與資料庫密碼匹配。

  2. 內建 SHA 加密:使用者輸入的密碼預設經過SHA加密,再和資料庫中的密碼進行匹配。

  3. 自定義密碼加密:使用者輸入的“密碼”或“使用者名稱和密碼”經過自定義加密規則進行加密,再和資料庫中的資訊進行匹配,支援 2 個介面實現方法,如下:

  4. 只需要對密碼進行加密得到密文:String encode(String originText);//入參是明文密碼,對密碼進行加密得到密文。

  5. 對使用者名稱和密碼進行加密得到密文:String encode(String originUserName, String originPassword);//入參是使用者名稱和明文密碼,返回結果是密文字元。

三、自定義密碼加密範例

1
BASE64 加密方式-自定義密碼驗證類。
  1. 定義一個類,命名為 Base64PasswordValidator.java,擴展於 AbstractPasswordValidator,詳細的程式碼請參照:https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/decision/privilege/encrpt/Base64PasswordValidator.java

  2. 編譯獲得 Base64PasswordValidator.class。

  3. 將編譯的 Base64PasswordValidator.class 放在/webapps/webroot/WEB→INF/classes/com/fr/decision/privilege/encrpt目錄下。

  4. 注:這裡使用 String encode(String originText);//只對密碼進行加密得到密文。

  5. 注:需要重啟工程。

Base64PasswordValidator.7z


2
BASE64 加密方式-平台設定。
  1. 點選【管理系統】→【使用者管理】→【所有使用者】→【同步使用者】。

  2. 彈出【同步使用者】面板,【加密方式】選擇【自訂密碼加密】,選擇Base64PasswordValidator.class。點選【確定】即可。

base64-平台设置.png

3
SHA256 加密方式-自定義密碼加密類。
  1. 定義一個類,命名為 CustomSHA256PasswordValidator.java,擴展於 AbstractPasswordValidator,詳細的程式碼參見:https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/decision/privilege/encrpt/CustomSHA256PasswordValidator.java

  2. 同上,編譯獲得 CustomSHA256PasswordValidator.class。

  3. 將編譯的CustomSHA256PasswordValidator.class放在/webapps/webroot/WEB→INF/classes/com/fr/decision/privilege/encrpt目錄下。

  4. 注:這裡使用 String encode(String originUserName, String originPassword);//對使用者名稱和密碼一起進行加密得到密文。

CustomSHA256PasswordValidator.7z


4
SHA256加密方式-平台設定。
  1. 點選【管理系統】→【使用者管理】→【所有使用者】→【同步使用者】。

  2. 彈出【同步使用者】面板,【加密方式】選擇【自訂密碼加密】,選擇Base64PasswordValidator.class。點選【確定】即可。

SHA256-平台设置.png

5
MD5 加密方式-下載並放置MD5加密類。
  1. 現提供現成的MD5加密類。

  2. 點選下載之後,將decision→new→password.zip解壓,解壓後得到decision資料夾,將資料夾放於%FR_HOME%\webroot\WEB→INF\classes\com\fr\decision目錄下。

decision-new-password.zip


6
MD5加密方式-平台設定。
  1. 點選【管理系統】→【使用者管理】→【所有使用者】→【同步使用者】。

  2. 彈出【同步使用者】面板,【加密方式】選擇【自訂密碼加密】,選擇MD5PasswordValodator.class。點選【確定】即可。

md5-平台设置1.png

7
MD5加密方式-支援使用者名稱加密。
  1. 若使用者需要的是:使用者名稱+密碼的方式進行自定義加密,請使用檔案:decision.zip,使用方法同上。

decision.zip


8
MD5加密方式-注意事項。
  1. 9.0 版本 FineReport 內建的 MD5 加密方式不區分密文大小寫,10.0 版本 FineReport適配的 MD5 加密方式區分大小寫。

  2. 9.0 同步選擇內建 MD5 加密,升級後會內建一個小寫 MD5 的 class,如果是大寫密文,升級後就不能登入,需要手動替換大寫 class,使用方法同上。


附件列表


主題: 決策平台
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉