修改CAS的MD5加密規範

2.4.1、背景

 本文使用的CAS版本爲4.0.0

       CAS服務和第三方進行對接,第三方使用的MD5加密規範爲64位,而CAS的MD5加密規範爲32位。因爲第三方數據庫中數據繁多,不便於進行修改。因此,需要修改CAS的加密規範爲MD5 64位。

2.4.2、操作

2.4.2.1、獲取cas-server-core -4.0.0.jar

       打開CAS的Linux安裝目錄,在路徑/apache-tomcat-7.0.68/webapps/cas/WEB-INF/lib下,獲取cas-server-core-4.0.0.jar文件,將該文件下載到本地環境下。

2.4.2.2、獲取CAS的DefaultPasswordEncoder加密類

       找到上一步下載到本地的cas-server-core-4.0.0.jar,右鍵該jar包,選擇提取到當前目錄選項。在解壓縮得到的文件夾,按照路徑org\jasig\cas\authentication\handler依次打開,顯示如圖2.4.2.2.1所示:

圖2.4.2.2.1

       我們要重寫DefaultPasswordEncoder類,該接口實現了PasswordEncoder接口,因此在重寫類的時候需要導入該接口。

       使用反編譯工具分別將這兩個.class文件反編譯成.java文件,這兩個java文件會在下一步用到。

2.4.2.3、重寫CAS的DefaultPasswordEncoder加密類

       在eclipse或myEclipse中創建WebService Project工程,工程名隨意。在該工程下創建名爲org.jasig.cas.authentication.handler的包。在該包下創建一個名爲PasswordEncoder的接口,創建一個名爲DefaultPasswordEncoder的類。將2.4.2.2反編譯獲取的java文件內容依次複製到新創建的類中。

       重寫DefaultPasswordEncoder類,新增EncoderPwdByMd5方法,重寫encode方法重寫後的內容如下所示:

package org.jasig.cas.authentication.handler;

 

import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

 

publicclassDefaultPasswordEncoder implements PasswordEncoder{

 

    //生成MD5 

    publicstaticfinal StringEncoderPwdByMd5(String str)

      {

        String newstr = "";

        try

        {

          MessageDigest md5 = MessageDigest.getInstance("MD5");

          BASE64Encoder base64en = new BASE64Encoder();

         

          newstr =base64en.encode(md5.digest(str.getBytes("utf-8")));

        }

        catch (NoSuchAlgorithmException e)

        {

          e.printStackTrace();

        }

        catch (UnsupportedEncodingException e)

        {

          e.printStackTrace();

        }

        return newstr;

      }

   

   

    @Override

    public String encode(StringparamString) {

        // TODO Auto-generated method stub

        return EncoderPwdByMd5(paramString);

    }

   

      privatestaticfinalchar[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

 

      privatefinalString encodingAlgorithm;

      private String characterEncoding;

     

      public DefaultPasswordEncoder(String encodingAlgorithm)

      {

        this.encodingAlgorithm = encodingAlgorithm;

      }

     

      private String getFormattedText(byte[] bytes)

      {

        StringBuilder buf = new StringBuilder(bytes.length * 2);

        for (int j = 0; j < bytes.length; j++)

        {

          buf.append(HEX_DIGITS[(bytes[j] >> 4 & 0xF)]);

          buf.append(HEX_DIGITS[(bytes[j] & 0xF)]);

        }

        return buf.toString();

      }

     

      publicfinalvoidsetCharacterEncoding(String characterEncoding)

      {

        this.characterEncoding = characterEncoding;

      }

     

      static {}

 

}

保存修改後的類。

2.4.2.4、修改cas-server-core-4.0.0.jar

打開eclipse/myeclipse的workspace,如圖2.4.2.4.1所示

圖2.4.2.4.1

選定你在2.4.2.3創建的Web Service Project工程,例如,我的工程名爲test1,然後依次打開如下路徑:\WebRoot\WEB-INF\classes\org\jasig\cas\authentication\handler。顯示如圖2.4.2.4.2所示:

圖2.4.2.4.2

保留該窗口,下一步要用。

找到2.4.2.1下載的cas-server-core-4.0.0.jar,右鍵該jar包,選擇打開壓縮文件選項,彈出如圖2.4.2.4.3所示頁面

圖2.4.2.4.3

       按照路徑org\jasig\cas\authentication\handler\ 依次打開,顯示如圖2.4.2.4.4所示:

圖2.4.2.4.4

       將圖2.4.2.4.2中的DefaultPasswordEncoder.class文件拖動到圖2.4.2.4.4中,拖動完後關閉圖2.4.2.4.4窗口

2.4.2.5、發佈修改後的cas-server-core-4.0.0.jar

 打開CAS的Linux安裝目錄,在路徑/apache-tomcat-7.0.68/webapps/cas/WEB-INF/lib下,用修改後的cas-server-core-4.0.0.jar文件覆蓋該路徑下原來的cas-server-core-4.0.0.jar,重啓服務。完成了對CAS MD5加密規範的重寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章