反饋已提交
網絡繁忙
使用者在登入數據決策系統時需要進行 使用者身分驗證 ,系統會對輸入帳號和密碼進行驗證,以確定系統安全。
登入驗證資訊(帳號和登入密碼)儲存在資料庫(FineReport 內建資料庫 FineDB 或者其他外接資料庫)中,驗證時使用者輸入密碼與資料庫中密碼相同則驗證透過。
若資料庫被破解,則登入驗證資訊曝光,對系統安全造成威脅。怎樣避免此類情況,保證系統安全呢?
使用者可以對 FineDB 中的登入資訊進行加密。保證即使資料庫被破解,也無法得到使用者的真正登入資訊。
同時,FineReport 在 匯入使用者 中提供「自訂密碼加密」方式,可以對使用者在登入頁輸入登入資訊進行加密。當加密後的登入資訊與 FineDB 庫中的登入資訊一致時,驗證透過。如下圖所示:
加密簡介:自訂密碼加密,即自訂一個密碼加密類。
加密方式在類中描述,並儲存在%FR_Home%\webapps\webroot\WEB-INF\classes資料夾中。
數據決策系統會在使用者自訂加密算法的基礎上再進行 SHA256 二次加密,以保證密碼安全。
適用場景:匯入的伺服器資料集中的密碼列為明文時,可以使用自訂加密。
登入密碼:匯入的伺服器資料集中密碼列的明文。
加密API:透過API編寫自訂密碼加密類,對使用者輸入“密碼”或“帳號和密碼”經過自訂加密規則進行加密。支援的API如下:
1)只需要對密碼進行加密得到密文:String encode(String originText);//入參是明文密碼,對密碼進行加密得到密文
2)對帳號和密碼進行加密得到密文:String encode(String originUserName, String originPassword);//入參是帳號和明文密碼,傳回結果是密文字元
注1:其中 String encode(String originUserName, String originPassword);加密方式為 2019-01-18 新增的API,包含API1的功能,推薦使用此API。
注2:自訂加密算法,必須繼承 AbstractPasswordValidator 類。
如果使用者在登入頁面輸入明文密碼後,能夠成功登入數據決策系統。那麼在這個程式中會進行四次加密和一次登入驗證。
匯入使用者後發生:
1)第一次加密:匯入使用者後,系統會對伺服器資料集中的明文進行自訂加密。
2)第二次加密:系統統一進行的 SHA256 加密,加密物件為第一次加密伺服器資料集後得到的密文,得到的密文寫入 FineDB 庫。
使用者登入時發生:
3)第三次加密:使用者選取的自訂密碼加密方式,加密物件為使用者輸入明文密碼。
4)第四次加密:系統統一進行的 SHA256 加密,加密物件為第三次加密後的密文。
5)登入驗證:對比第四次加密後得到的密文與 FineDB 庫中的密文,一致則驗證透過。
如下圖所示:
1)自訂一個密碼加密類,用於加密使用者在登入頁面輸入明文密碼 A。
準備編譯環境
編寫 Java 檔案
編譯 class 檔案
2)建立伺服器資料集,儲存使用者的登入資訊,包括帳號、登入密碼等。
3)匯入使用者資訊至資料決策平台,用於系統登入驗證。
使用者來源為步驟 2 中準備的伺服器資料集。
密碼選擇伺服器資料集中的密碼,為自訂加密後的密文。
設定加密方式為自訂加密,使用步驟 1 中準備的密碼加密類。
本文範例:編寫 BASE64 密碼加密類,對使用者輸入“密碼”經過自訂加密規則進行加密,然後進行登入驗證,成功登入數據決策系統。
注:本文僅對 Base64 加密方式進行簡單範例,對於其他常見的加密方式,本文在第五節提供自訂類檔案,使用者可以根據自己的需求下載使用。
編譯程式前,需先建立一個 Java 工程環境,並且需要一個 Java 編輯器,如 Eclipse 或 idea 。
在編輯器下開啟工程,選擇「Properties>Java Build Path>Libraries」,匯入 FineReport 工程 JAR 包,詳細操作可參考:編譯Java程式
在編譯器中定義一個類,命名為 Base64PasswordValidator.java,擴展於 AbstractPasswordValidator。Java 程式碼如下:
package com.fr.decision.privilege.encrpt;;import com.fr.base.Base64;import com.fr.base.ServerConfig;import com.fr.decision.privilege.encrpt.AbstractPasswordValidator;import com.fr.log.FineLoggerFactory;import java.io.UnsupportedEncodingException;public class Base64PasswordValidator extends AbstractPasswordValidator { public Base64PasswordValidator() { } public String encode(String originText) { try { return Base64.encode(originText.getBytes(ServerConfig.getInstance().getServerCharset())); } catch (UnsupportedEncodingException var3) { FineLoggerFactory.getLogger().debug(var3.getMessage()); return ""; } }}
點選下載並解壓獲得 class 檔案:Base64PasswordValidator.zip
1)生成 class 檔案
編譯 Base64PasswordValidator.java,生成 Base64PasswordValidator.class 檔案。
2)匯入 class 檔案
將編譯後的 Base64PasswordValidator.class 檔案儲存到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt資料夾下。
使用者在資料庫中準備的密碼會經過兩次加密後寫入 FineDB 庫,用於登入校驗。保證即使資料庫被破解,也無法得到使用者的真正登入資訊。
準備一張使用者資訊表,其中 password 資料列中的密碼是明文。表結構如下圖所示:
範例:若使用者 a 在登入頁面實際輸入明文密碼為:123456,則 password 列中存放的密碼為 123456
點選下載使用者資訊表: 匯入使用者.xlsx
請自行使用第三方資料庫管理工具,將上表匯入資料庫,並建立系統與該資料庫的 資料連結 。下文將以 FRDemo 資料庫為例。
1)管理者登入數據決策系統,點選「管理系統>資料連結>伺服器資料集」,建立「SQL資料集」。如下圖所示:
2)設定資料集名稱為「匯入使用者」,資料連結選擇「FRDemoTW」,SQL 語句為:
select * from 匯入使用者
注:若使用者選擇其他自訂密碼加密方式,可在本節 4.5.2 中更改自訂加密類。本文在第五節提供了常用的自訂加密類檔案,使用者可按需選用。
在匯入使用者中可以選擇自訂密碼加密方式來提升系統的安全性。
1)管理者登入數據決策系統,點選「管理系統>使用者管理>所有使用者」,點選「匯入使用者」,配置使用者資訊。如下圖所示:
1)使用者來源選擇為:4.4.2 中準備的伺服器資料集「匯入使用者」
2)密碼選擇為:password
3)加密方式選擇為:自訂密碼加密,使用 4.3 節中準備的 Base64PasswordValidator.class 自訂加密類
點選「確定」,匯入使用者成功。如下圖所示:
使用者 a 登入數據決策系統:
伺服器資料集中使用者 a 的密碼:123456 ,在登入頁面輸入明文密碼:123456。
點選「登入」,成功登入數據決策系統。如下圖所示:
本文提供了常用的自訂密碼加密方式檔案,使用者可根據需求使用。點選下載檔案後放到指定資料夾下,並更改 4.5.2 節中的自訂類,其餘步驟參照第四節範例即可。
FineReport 支援使用 BASE64 加密方式對使用者輸入帳號和密碼一起進行加密。
現提供編譯後的 BASE64 加密類,點選下載檔案:Base64UserPasswordValidator.zip
1)點選下載並解壓獲得 class 檔案,將檔案儲存到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。
2)配置伺服器資料集中 password 列為“密碼”的明文,系統會對“帳號+密碼”進行加密,最終入庫 FineDB。
範例:使用者 a 的密碼是 123456,則伺服器資料集中,password 列應該是 123456,系統對 a123456 加密。
FineReport 支援使用 SHA256 加密方式對使用者輸入密碼進行加密。
現提供編譯後的 SHA256 加密類,點選下載檔案:SHA256PasswordValidator.zip
點選下載並解壓獲得 class 檔案,將檔案儲存到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt資料夾下。
FineReport 支援使用 SHA256 加密方式對使用者輸入帳號和密碼一起進行加密。
現提供編譯後的 SHA256 加密類,點選下載檔案:CustomSHA256PasswordValidator.zip
1)點選下載並解壓獲得 class 檔案,將檔案儲存到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt資料夾下。
FineReport 支援使用 MD5(32位小寫)加密方式對使用者輸入密碼進行加密。
現提供編譯後的 MD5(32位小寫)加密類,點選下載檔案:MD5CasePasswordValidator.zip
點選下載並解壓獲得 class 檔案,將檔案儲存到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。
FineReport 支援使用 MD5(32位小寫)加密方式對使用者輸入帳號和密碼一起進行加密。
現提供編譯後的 MD5(32位小寫)加密類,點選下載檔案:MD5CaseUserPasswordValidator.zip
FineReport 支援使用 MD5(32位大寫)加密方式對使用者輸入密碼進行加密。
現提供編譯後的 MD5(32位大寫)加密類,點選下載檔案:MD5UpperCasePasswordValidator.zip
FineReport 支援使用 MD5(32位大寫)加密方式對使用者輸入帳號和密碼一起進行加密。
現提供編譯後的 MD5(32位大寫)加密類,點選下載檔案:MD5UpperCaseUserPasswordValidator.zip
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙