1、创建自己的加密工具类,
在项目中随便创建一个包路径,在这个包下创建自己的加密工具类,并继承org.jasig.cas.authentication.handler.PasswordEncoder
这里可能会发现找不到org.jasig.cas.authentication.handler.PasswordEncoder,出现这种情况是因为没有对应的jar包,最简单也是最不容易出错的办法是将pom.xml 中
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-webapp</artifactId>
<version>${cas.version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
中的 <scope>runtime</scope>去掉。如果出现jar包冲突的问题,请查看我前面的笔记https://blog.csdn.net/zh_Json/article/details/83655813
2、重写encode方法,例如:
package com.demo.jiami;
import org.jasig.cas.authentication.handler.PasswordEncoder;
public class PasswordEncrypt implements PasswordEncoder{
@Override
public String encode(String ssoToken) {
try
{
byte[] _ssoToken = ssoToken.getBytes("ISO-8859-1");
String name = new String();
// char[] _ssoToken = ssoToken.toCharArray();
for (int i = 0; i < _ssoToken.length; i++) {
int asc = _ssoToken[i];
_ssoToken[i] = (byte) (asc + 27);
name = name + (asc + 27) + "%";
// _ssoToken[i] = (char)((int)asc + 27);
// System.out.println(_ssoToken[i]);
}
//String name = new String(_ssoToken);
return name;
}catch(Exception e)
{
e.printStackTrace() ;
return null;
}
}
}
3、在deployerConfigContext.xml中配置自己的加密bean,指向自己的加密工具类
<bean id="passwordEncoder" class="com.demo.jiami.PasswordEncrypt" autowire="byName"></bean>
这个bean 位置可随意,只要在<beans></beans>里边即可。
特别说明,如果使用cas自带的加密功能,那么就不需要 自己写加密工具了,只需要配置一下cas.properties和deployerConfigContext.xml即可
如果在deployerConfigContext.xml里边不使用变量,则不需要配置cas.properties
<!--cas自带的密码加密器-->
<bean id="passwordEncoder"class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"c:encodingAlgorithm="MD5" p:characterEncoding="ISO-8859-1" />
如果在cas.properties中配置加密方式,找到
#cas.authn.password.encoding.char=UTF-8
#cas.authn.password.encoding.alg=SHA-256
打开注释,配置加密方式:
cas.authn.password.encoding.char=UTF-8
cas.authn.password.encoding.alg=MD5
在deployerConfigContext.xml只需要配置:
<alias name="defaultPasswordEncoder" alias="passwordEncoder" />
即可,这样,加密方式就在 cas.properties中修改就行了