首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL JDBCRealm ()函数的口令摘要

MySQL JDBCRealm ()函数的口令摘要
EN

Stack Overflow用户
提问于 2009-08-07 13:07:34
回答 1查看 1.3K关注 0票数 0

对于内部的Tomcat/Java/Struts应用程序,我们将自定义编写的身份验证代码转换为使用JDBCRealm。数据库为MySQL 5.0,密码以PASSWORD()-encrypted字符串形式存储。在我们的MySQL版本中,PASSWORD() function是一个非标准的(专有的)41字节的散列。(我现在知道我们不应该使用它作为我们的密码,而应该使用SHA1()MD5()。但我们到了这里。)

有没有办法在不强制所有用户重新输入密码的情况下使用JDBMRealm,以便我们可以对其重新编码?是否有允许我们根据PASSWORD()-encoded password列进行身份验证的JDBCRealm摘要?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-07 16:55:11

新的MySQL版本provide a function称为OLD_PASSWORD(),它以一种向后的方式消化密码-与4.0和更早版本兼容。

因此,您所能做的就是以这样一种方式进行configure JDBCRealm

  1. 本身不使用任何类型的摘要。即使在安全的环境中,这显然也不是理想的做法,而且如果您的数据库服务器存在于不可信的连接上,这显然是非常危险的。为此,在将密码与数据库中的密码进行比较之前,不要指定digest attribute.
  2. Uses上述OLD_PASSWORD()函数对密码进行加密。您必须扩展JDBCRealm,此功能不是开箱即用的。对于Tomcat6.0,您必须重写authenticate(Connection c, String username, String credentials)方法。

您还可以使用上面的方法作为迁移策略的一部分:让被覆盖的方法同时支持OLD_PASSWORD()和digest,并强制使用OLD_PASSWORD()进行身份验证的用户更改其密码。随着时间的推移,您将有望切换到标准的基于摘要的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1244607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档