匯入使用者密碼加密設定

  • 文档创建者:Suki陈
  • 历史版本:3
  • 最近更新:Nikozhan 于 2025-04-02
  • 1. 問題描述

    使用者在登入 FineDataLink 系統時需要進行 用户身份验证 系統會對輸入帳號和密碼進行驗證,以確定系統安全。

    登入驗證資訊(帳號和登入密碼)儲存在資料庫(FineDataLink 內建資料庫 FineDB 或者其他外接資料庫)中,驗證時使用者輸入密碼與資料庫中密碼相同則驗證透過。

    若資料庫被破解,則登入驗證資訊曝光,對系統安全造成威脅。怎樣避免此類情況,保證系統安全呢?

    2. 解決方案

    使用者可以對 FineDB 中的登入資訊進行加密。保證即使資料庫被破解,也無法得到使用者的真正登入資訊。

    同時,FineDataLink导入用户中提供「自訂密碼加密」方式,可以對使用者在登入頁輸入登入資訊進行加密。當加密後的登入資訊與 FineDB 庫中的登入資訊一致時,驗證透過。如下圖所示:

    加密簡介:自訂密碼加密,即自訂一個密碼加密類。

                   加密方式在類中描述,並儲存在%FineDataLink_Home%\webapps\webroot\WEB-INF\classes資料夾中。

                   FineDataLink 會在使用者自訂加密算法的基礎上再進行 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 類。

    3. 實現思路

    3.1 加密驗證邏輯

    如果使用者在登入頁面輸入明文密碼後,能夠成功登入 FineDataLink 。那麼在這個程式中會進行四次加密和一次登入驗證。

    匯入使用者後發生:

    1)第一次加密:匯入使用者後,系統會對伺服器資料集中的明文進行自訂加密。

    2)第二次加密:系統統一進行的 SHA256 加密,加密物件為第一次加密伺服器資料集後得到的密文,得到的密文寫入 FineDB 庫

    使用者登入時發生:

    3)第三次加密:使用者選取的自訂密碼加密方式,加密物件為使用者輸入明文密碼。

    4)第四次加密:系統統一進行的 SHA256 加密,加密物件為第三次加密後的密文。

    5)登入驗證:對比第四次加密後得到的密文與 FineDB 庫中的密文,一致則驗證透過。

    如下圖所示:


    3.2 實現步驟

    1)自訂一個密碼加密類,用於加密使用者在登入頁面輸入明文密碼 A。

    • 準備編譯環境

    • 編寫 Java 檔案

    • 編譯 class 檔案

    2)建立伺服器資料集,儲存使用者的登入資訊,包括帳號、登入密碼等。

    3)匯入使用者資訊至 FineDataLink ,用於登入驗證。

    • 使用者來源為步驟 2 中準備的伺服器資料集。

    • 密碼選擇伺服器資料集中的密碼,為自訂加密後的密文。

    • 設定加密方式為自訂加密,使用步驟 1 中準備的密碼加密類。

    4. 自訂密碼加密範例

    本文範例:編寫 BASE64 密碼加密類,對使用者輸入“密碼”透過自訂加密規則進行加密,然後進行登入驗證,成功登入 FineBI 系統。

    注:本文僅對 Base64 加密方式進行簡單範例,對於其他常見的加密方式,本文在第五節提供自訂類檔案,使用者可以根據自己的需求下載使用。

    4.1 準備編譯環境

    具體操作步驟請參考:編譯Java程式

    4.2 編寫Java檔案

    在編譯器中定義一個類,命名為 Base64PasswordValidator.java,擴展於 AbstractPasswordValidatorJava 程式碼如下:

    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 "";
            }
        }
    }
    显示代码

    4.3 編譯class檔案

    點選下載並解壓獲得 class 檔案:Base64PasswordValidator.zip

    1)生成 class 檔案

    編譯 Base64PasswordValidator.java,生成 Base64PasswordValidator.class 檔案。

    2)匯入 class 檔案

    將編譯後的 Base64PasswordValidator.class 檔案儲存到%FineDataLink_Home%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt資料夾下。

    注:若在 %FineDataLink_Home%\webapps\webroot\WEB-INF\classes\com\fr 下不存在 decision/privilege/encrpt 資料夾,使用者自行建立即可。

    4.4 建立伺服器資料集

    使用者在資料庫中準備的密碼會經過兩次加密後寫入 FineDB 庫,用於登入校驗。保證即使資料庫被破解,也無法得到使用者的真正登入資訊。

    4.4.1 資料準備

    準備一張使用者資訊表,其中 password 資料欄中的密碼是明文表結構如下圖所示:

    範例:若使用者 a 在登入頁面實際輸入明文密碼為:123456,則 password 列中存放的密碼為 123456

    點選下載使用者資訊表:导入用户.xlsx

    4.4.2 新增伺服器資料集

    請自行使用第三方資料庫管理工具,將上表匯入資料庫,並建立系統與該資料庫的 建立並管理資料源 。下文將以 FDLDemo 資料庫為例。

    1)管理者登入 FineDataLink ,點選「管理系統>資料連結>伺服器資料集」,建立「SQL資料集」。如下圖所示:

    2)設定資料集名稱為「匯入使用者」,資料連結選擇「FDLDemo」,SQL 語句為:

    select * from 匯入使用者

    4.5 設定加密方式

    注:若使用者選擇其他自訂密碼加密方式,可在本節 4.5.2 中更改自訂加密類。本文在第五節提供了常用的自訂加密類檔案,使用者可按需選用。

    在匯入使用者中可以選擇自訂密碼加密方式來提升系統的安全性。

    4.5.1 匯入使用者

    1)管理者登入 FineDataLink ,點選「管理系統>使用者管理>所有使用者」,點選「匯入使用者」,配置使用者資訊。如下圖所示:

    4.5.2 加密配置

    1)使用者來源選擇為:4.4.2 中準備的伺服器資料集「匯入使用者」

    2)密碼選擇為:password

    3)加密方式選擇為:自訂密碼加密,使用 4.3 節中準備的 Base64PasswordValidator.class 自訂加密類

    如下圖所示:

    點選「確定」後,由於使用者想要將加密方式由「內建 SHA 加密」變更為「自訂加密方式」,系統會彈窗提示「更改加密方式將清空原有匯入/新增的使用者、部門、職務、角色資料,並重置管理者帳號,確定更改?」。如下圖所示:

    點選「確定」,清空原有匯入/新增的使用者、部門、職務、角色資料,並重置管理者帳號後,匯入使用者成功,如下圖所示:

    4.6 效果預覽

    使用者 a 登入 FineDataLink :

    伺服器資料集中使用者 a 的密碼:123456 ,在登入頁面輸入明文密碼:123456。

    點選「登入」,成功登入 FineDataLink 。如下圖所示:

    5. 常用的自訂密碼加密方式

    本文提供了常用的自訂密碼加密方式檔案,使用者可根據需求使用。點選下載檔案後放到指定資料夾下,並更改 4.5.2 節中的自訂類,其餘步驟參照第四節範例即可。

    5.1 BASE64加密帳號和密碼

    FineDataLink 支援使用 BASE64 加密方式對使用者輸入帳號和密碼一起進行加密。

    現提供編譯後的 BASE64 加密類,點選下載檔案:Base64UserPasswordValidator.class.zip

    1)點選下載並解壓獲得 class 檔案,將檔案儲存到%BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。

    2)配置伺服器資料集中 password 列為“密碼”的明文,系統會對“帳號+密碼”進行加密,最終入庫 FineDB。

    範例:使用者 a 的密碼是 123456,則伺服器資料集中,password 列應該是 123456,系統對 a123456 加密。

    5.2 SHA256加密密碼

    FineDataLink 支援使用 SHA256 加密方式對使用者輸入密碼進行加密。

    現提供編譯後的 SHA256 加密類,點選下載檔案:SHA256PasswordValidator.zip

    點選下載並解壓獲得 class 檔案,將檔案儲存到%FineDataLink_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt資料夾下。

    5.3 SHA256加密帳號和密碼

    FineDataLink 支援使用 SHA256 加密方式對使用者輸入帳號和密碼一起進行加密。

    現提供編譯後的 SHA256 加密類,點選下載檔案:CustomSHA256PasswordValidator.zip

    1)點選下載並解壓獲得 class 檔案,將檔案儲存到%FineDataLink_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt資料夾下。

    2)配置伺服器資料集中 password 列為“密碼”的明文,系統會對“帳號+密碼”進行加密,最終入庫 FineDB。

    範例:使用者 a 的密碼是 123456,則伺服器資料集中,password 列應該是 123456,系統對 a123456 加密。

    5.4 MD5(32位小寫)加密密碼

    FineDataLink 支援使用 MD5(32位小寫)加密方式對使用者輸入密碼進行加密。

    現提供編譯後的 MD5(32位小寫)加密類,點選下載檔案:MD5CasePasswordValidator.zip

    點選下載並解壓獲得 class 檔案,將檔案儲存到%FineDataLink_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。

    5.5 MD5(32位小寫)加密帳號和密碼

    FineDataLink 支援使用 MD5(32位小寫)加密方式對使用者輸入帳號和密碼一起進行加密。

    現提供編譯後的 MD5(32位小寫)加密類,點選下載檔案:MD5CaseUserPasswordValidator.class.zip

    1)點選下載並解壓獲得 class 檔案,將檔案儲存到%FineDataLink_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。

    2)配置伺服器資料集中 password 列為“密碼”的明文,系統會對“帳號+密碼”進行加密,最終入庫 FineDB。

    範例:使用者 a 的密碼是 123456,則伺服器資料集中,password 列應該是 123456,系統對 a123456 加密。

    5.6 MD5(32位大寫)加密密碼

    FineDataLink 支援使用 MD5(32位大寫)加密方式對使用者輸入密碼進行加密。

    現提供編譯後的 MD5(32位大寫)加密類,點選下載檔案:MD5UpperCasePasswordValidator.zip

    點選下載並解壓獲得 class 檔案,將檔案儲存到%FineDataLink_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。

    5.7 MD5(32位大寫)加密帳號和密碼

    FineDataLink 支援使用 MD5(32位大寫)加密方式對使用者輸入帳號和密碼一起進行加密。

    現提供編譯後的 MD5(32位大寫)加密類,點選下載檔案:MD5UpperCaseUserPasswordValidator.zip

    1)點選下載並解壓獲得 class 檔案,將檔案儲存到%FineDataLink_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege資料夾下。

    2)配置伺服器資料集中 password 列為“密碼”的明文,系統會對“帳號+密碼”進行加密,最終入庫 FineDB。

    範例:使用者 a 的密碼是 123456,則伺服器資料集中,password 列應該是 123456,系統對 a123456 加密。


    附件列表


    主题: 系統管理
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!