论坛首页 Java版 Spring

cas密码解密问题

浏览 1175 次
精华帖 (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能够取得密码,但密码是密文的,怎么能在取得密码之前对密码进行接密,请大家看一下,谢谢
   
时间:2007-03-01
看都不用看,md5是单向hash算法,不能解密的,但是山东大学的王小云破解了它,所以md5现在已经是不安全的单向hash算法了,建议用sha1,sha1也是单向hash算法,不能解密的,你要做的就是看密文是否匹配,而不是看解密后看明文是否匹配
   
0 请登录后投票
时间:2007-03-01
是我说的有点不清,我现在主要意思是通过在cas输入明文密码后,经过MD5加密于数据库中的密文进行匹配,而不是对其解密,现在我只能通过明文进行密码验证,也就是后台数据库也是明文的,所以现在想在cas服务端先进行MD5加密验证,看一下
   
0 请登录后投票
时间:2007-03-01
cas我没有用过,不太清楚,等待其他人来解决这个疑问吧, 但是我有两点想法,1通过cas的配置(不知道有没有这中配置),2通过在cas登陆时添加一段加密的代码,强行将用户输入的密码用md5加密。
   
0 请登录后投票
时间:2007-03-01
以前在cas2.0时候,如果需要其它形式取得密码,是要在代码中实现的,但现在3.0版本从官网上说是通过配置文件进行配置(deployerConfigContext.xml),但在CAS端怎么使用MD5进行加密还不清楚,请大家指教,谢谢
   
0 请登录后投票
时间: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加密后再同数据库中密文比较么?
   
0 请登录后投票
论坛首页 Java版 Spring

跳转论坛: