cas配置完成以后 加入MD5怎么验证不通过。

zhangzhao608 2013-01-17 02:08:46
oracle是10g

明文密码可以通过

密文就无法通过。。


2013-01-17 14:05:59,737 INFO [org.jasig.cas.web.flow.InitialFlowSetupAction] - <Setting path for cookies to: /cas/>
2013-01-17 14:06:09,380 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - <org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler failed to authenticate [username: admin]>
2013-01-17 14:06:09,387 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: [username: admin]
WHAT: supplied credentials: [username: admin]
ACTION: AUTHENTICATION_FAILED
APPLICATION: CAS
WHEN: Thu Jan 17 14:06:09 CST 2013
CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1
SERVER IP ADDRESS: 0.0.0.0
=============================================================

>
2013-01-17 14:06:09,388 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: [username: admin]
WHAT: error.authentication.credentials.bad
ACTION: TICKET_GRANTING_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Thu Jan 17 14:06:09 CST 2013
CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1
SERVER IP ADDRESS: 0.0.0.0
=============================================================

>



这个是日志报的错。。。
急啊!!!!
...全文
873 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
张校长 2015-01-26
  • 打赏
  • 举报
回复
x相同问题,有知道jira 或者confluence中的密码保存的是哪种加密方式么?
左右脚 2013-07-26
  • 打赏
  • 举报
回复
CAS的算法明文是小写的,你可以改一下算法或者调用自己的加密类 这是CAS的 final StringBuilder buf = new StringBuilder(bytes.length * 2); for (int j = 0; j < bytes.length; j++) { buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); buf.append(HEX_DIGITS[bytes[j] & 0x0f]); } return buf.toString();
yashucn 2013-06-25
  • 打赏
  • 举报
回复
CAS里面的MD5加密方式跟你目前用的加密方式不一样,自己写一个类,应该就可以。
落雨_ 2013-04-25
  • 打赏
  • 举报
回复
自己写一个MD5生成类,然后在xml里面做替换即可解决你的问题,估计MD5算法不一样吧。我们公司的MD5算法很简单,但是放到cas里面就无法验证通过,我自己重新写了一个类,把class文件放到指定的包路径下,就验证ok啦。。你也可以自己打个jar包,把所有自定义的修改的类都放进去。。

<!--配置验证类1-->
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
	<property name="dataSource" ref="dataSource" ></property>
	<property name="sql" value="select pw from sys_acct_auth where user_code =?" ></property>
	<property name="passwordEncoder" ref="RS10Md5PasswordEncoder" ></property>
</bean>

<!--数据验证模式1 它自己的MD5加密接口-->
       <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
			<constructor-arg index="0" value="MD5" />
	 </bean>
	 
	 <!--数据验证模式2 我自己实现的MD5接口-->
	<bean id="RS10Md5PasswordEncoder" class="org.jasig.cas.authentication.handler.Crypt">
	   </bean>
将cas-server的jar包随便导到一个工程里,然后再工程里新建一个自己的类,实现encode方法,并返回加密后的字符串。


/**
 * Project Name:JhostAddTime
 * File Name:Crypt.java
 * Package Name:org.jasig.cas.authentication.handler
 * Date:2013-4-25下午02:50:55
 * Copyright (c) 2013, riambsoft All Rights Reserved.
 *
*/

package org.jasig.cas.authentication.handler;


/**
 * ClassName:Crypt <br/>
 * Function: TODO ADD FUNCTION. <br/>
 * Reason:	 TODO ADD REASON. <br/>
 * Date:     2013-4-25 下午02:50:55 <br/>
 * @author   Administrator
 * @version  
 * @since    JDK 1.5
 * @see 	 
 */
public class Crypt  implements PasswordEncoder{
    /**
     * 进行加密编码
     * @param s 要加密的字符串
     * @return 加密后的字符串
     */
    public String encode(String s)
    {
      MD5 md5=new MD5();
      String ecd=md5.getMD5ofStr(s) ;
      System.out.println("-------- need =["+ecd+"]") ;
      return ecd;
    }
}
ok 这样就搞定了。搞不了的看我的帖子吧。http://blog.csdn.net/ae6623/article/details/8848107
zhangyuIT47 2013-02-25
  • 打赏
  • 举报
回复
找到问题了,应该是你用的加密算法跟cas自带的md5有出入吧,我刚才试了一下,将encoder换成自己的class就可以了,你试一试吧 <bean id="MyMD5" class="org.jasig.cas.util.TestUtil"> </bean> public class TestUtil implements PasswordEncoder{ ……………… }
zhangyuIT47 2013-02-25
  • 打赏
  • 举报
回复
我遇到跟你一样的情况了,暂时还没解决
zhangzhao608 2013-01-18
  • 打赏
  • 举报
回复
WAHT ?有人没有?
EverWHL 2013-01-18
  • 打赏
  • 举报
回复
你这样你在后台写一个md5解密的方法啊 解密完后在进行数据比对啊。 解密方法网上很多 http://hi.baidu.com/qethan/item/fdb964f62d4bfd43932af2fb 一般数据库中存的都是加密后的密码,因为管理员 不能看到有关用户的信息的,那样在比对的时候在通过md5加密在进行数据库的 比对。
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
置顶球帮助把。。。。
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
引用 8 楼 sd4000784 的回复:
引用 5 楼 zhangzhao608 的回复:Plain Text code?12345<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource"……
这段代码我也配置了,然后就是验证不通过。不知道是什么原因。
  • 打赏
  • 举报
回复
引用 5 楼 zhangzhao608 的回复:
Plain Text code?12345<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource" /> ……
cas 提供md5加密 deployerConfigContext.xml
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
      <constructor-arg index="0">
        <value>MD5</value>
	  </constructor-arg>
</bean>


<!--  自己添加的bean  -->
				<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
					<property name="dataSource" ref="dataSource"></property>
					<property name="sql" value="select password from t_test where username = ? "></property>
					<!-- 生成md5 密码 与数据库的md5 密码匹配 -->
					<!--<property name="passwordEncoder" ref="MD5PasswordEncoder"></property>-->
				</bean>
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
木有人啊????
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
?人工置顶求帮助啊!
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> 
					<property name="dataSource" ref="dataSource" /> 
					<property name="sql" value="select password from user_demo where lower(userName) = lower(?)" /> 
					<property name="passwordEncoder" ref="passwordEncoder" />
					</bean>
这个是xml里面的配置文件,就是根据username取出密文的。
笑莫问 2013-01-17
  • 打赏
  • 举报
回复
数据库中保存的是明文啊,可以将这个用户名对应的密码从数据库取出来,用同样的MD5算法加密,然后再和客户端传递过来的密码比较。 一般数据库是保存加密后的密码,这样就能直接比较。
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
高手来解决一下哈。
zhangzhao608 2013-01-17
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
你不开玩笑吗,比如数据库里是admin,你加密后变成2sfrr823,数据库能验证通过吗?数据库里的值也必须是加密后的。
现在数据中 用户名是admin 密码是MD5加密的。 这个要怎么配呢?
  • 打赏
  • 举报
回复
你不开玩笑吗,比如数据库里是admin,你加密后变成2sfrr823,数据库能验证通过吗?数据库里的值也必须是加密后的。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧