浏览 1175 次
|
锁定老贴子 主题:cas密码解密问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-03-01 关键字: acegi与cas结合
目前自己在做一个关于权限安全的产品,采用了acegi,版本:1.0.3,单点登陆(sso)采用耶鲁大学的cas验证,版本是3.0.6,目前一切测试已经通过,但是遇到一个问题就是在acegi中密码用MD5加密后放入数据库中,但在cas验证端如何能先解密,然后进行验证,在cas的WEB-INF下的deployerConfigContext.xml文件配置如下:
注释掉 <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> 增加 <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password from user where loginid=?" /> <!--<property name="authenticateUsernamePasswordInternal"><value>true</value></property>--> <property name="dataSource" ref="dataSource" /> </bean> <!--这是为了通过jdbc取得密码--> 另外需要增加一个配置配置数据源,配置如下: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>jdbc:mysql://localhost:3306/group</value></property> <property name="username"><value>root</value></property> <property name="password"><value>123456</value></property> </bean> 现在cas能够取得密码,但密码是密文的,怎么能在取得密码之前对密码进行接密,请大家看一下,谢谢 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-03-01
看都不用看,md5是单向hash算法,不能解密的,但是山东大学的王小云破解了它,所以md5现在已经是不安全的单向hash算法了,建议用sha1,sha1也是单向hash算法,不能解密的,你要做的就是看密文是否匹配,而不是看解密后看明文是否匹配
|
|
| 返回顶楼 | |
|
时间:2007-03-01
是我说的有点不清,我现在主要意思是通过在cas输入明文密码后,经过MD5加密于数据库中的密文进行匹配,而不是对其解密,现在我只能通过明文进行密码验证,也就是后台数据库也是明文的,所以现在想在cas服务端先进行MD5加密验证,看一下
|
|
| 返回顶楼 | |
|
时间:2007-03-01
cas我没有用过,不太清楚,等待其他人来解决这个疑问吧, 但是我有两点想法,1通过cas的配置(不知道有没有这中配置),2通过在cas登陆时添加一段加密的代码,强行将用户输入的密码用md5加密。
|
|
| 返回顶楼 | |
|
时间:2007-03-01
以前在cas2.0时候,如果需要其它形式取得密码,是要在代码中实现的,但现在3.0版本从官网上说是通过配置文件进行配置(deployerConfigContext.xml),但在CAS端怎么使用MD5进行加密还不清楚,请大家指教,谢谢
|
|
| 返回顶楼 | |
|
时间:2007-03-05
wuxj888 写道 目前自己在做一个关于权限安全的产品,采用了acegi,版本:1.0.3,单点登陆(sso)采用耶鲁大学的cas验证,版本是3.0.6,目前一切测试已经通过,但是遇到一个问题就是在acegi中密码用MD5加密后放入数据库中,但在cas验证端如何能先解密,然后进行验证,在cas的WEB-INF下的deployerConfigContext.xml文件配置如下:
注释掉 <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> 增加 <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password from user where loginid=?" /> <!--<property name="authenticateUsernamePasswordInternal"><value>true</value></property>--> <property name="dataSource" ref="dataSource" /> </bean> <!--这是为了通过jdbc取得密码--> 另外需要增加一个配置配置数据源,配置如下: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>jdbc:mysql://localhost:3306/group</value></property> <property name="username"><value>root</value></property> <property name="password"><value>123456</value></property> </bean> 现在cas能够取得密码,但密码是密文的,怎么能在取得密码之前对密码进行接密,请大家看一下,谢谢 难道你不能在cas中将明文用md5加密后再同数据库中密文比较么? |
|
| 返回顶楼 | |





