修改CAS的MD5加密规范,casmd5加密
修改CAS的MD5加密规范,casmd5加密
2.4.1、背景
本文使用的CAS版本为4.0.0CAS服务和第三方进行对接,第三方使用的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加密规范的重写。
查看评论
评论暂时关闭