修改CAS的MD5加密规范,casmd5加密


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加密规范的重写。

查看评论

相关内容