CAS WHAT: 1 errors, 0 successes 错误
程序员文章站
2022-03-08 20:11:51
...
最近在学习CAS单点登录,遇到了这个错误 WHAT: 1 errors, 0 successes ,在百度搜索一番后,也没有得到解决,最后自己排查了一下,解决了这个问题,所以跟大家分享一下
我是在给CAS配置数据源时出现的这个问题,我先说一下配置数据源的步骤:
(1) 修改cas服务端WEB-INF下的 deployerConfigContext.xml ,添加以下配置
<!-- 这个配置是配置数据源,将mysql数据信息存入xml文件中进行注入 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/bow?characterEncoding=utf8"
p:user="root"
p:password="root" />
<!-- 数据的处理机制 ,其中有一个sql语句,规定查询的数据库表,根据用户名把密码列出 -->
<bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="SELECT PASSWORD FROM userbean WHERE username= ?"
p:passwordEncoder-ref="passwordEncoder"/>
<!-- 这是一个md5的加密 -->
<!-- 针对于密码的加密操作 -->
<bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
c:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8" />
然后再将固定用户换为从数据库中获取数据,还是在本配置文件中,找到
<constructor-arg>
<map>
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
</map>
</constructor-arg>
将其中的<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
改为数据库的处理机制 dbAuthHandler
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
最后记得导入三个jar包:
重启cas服务,再次登录就会出现这样的错误:
WHO: audit:unknown
WHAT: 1 errors, 0 successes
ACTION: TICKET_GRANTING_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Tue Jun 05 19:28:57 CST 2018
CLIENT IP ADDRESS: 127.0.0.1
SERVER IP ADDRESS: 127.0.0.1
OK,到重点了,我的问题是我这是我测试使用的数据库,密码没有进行MD5的处理,而这里配置是解析MD5
,那么返回的密码再经过MD5处理,跟我们输入的就不一致了,所以才会导致登录失败,
解决办法就是:将
<bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="SELECT PASSWORD FROM userbean WHERE username= ?"
p:passwordEncoder-ref="passwordEncoder"/>
将这个属性去掉或者注释,就可以了
在使用到MD5密码时,再加上就可以了
删掉以后再次重启服务登录:
这就可以了!初学者,有误的地方请多指教