Glassfish 4中的密码加密算法
我最近将Glassfish从3.1.2更新到4.0,并希望在我的应用程序中使用基于FORM的身份验证之前设置了JDBCRealm。 密码在数据库中使用SHA-256散列(这是默认的摘要算法选项)。
这个领域有一个属性,在这个Glassfish版本中成为强制性的:密码加密算法。 非常令人难以置信的是,官方的Glassfish文档说它是可选的,并且输入字段下面的注释表示将其留空是一种风险,但是您不能将其留空,因为这是强制性的。
无论我在此属性中设置了什么,我都无法登录正在工作的应用程序。 (这对新登记的用户和旧用户都是如此。)我在Google上搜索了几天,但找不到该字段的选项。 有什么选择?
另外,我使用Glassfish和MySQL。 Glassfish会将加密后的密码发送给数据库吗?还是仅仅通过一些指令让MySQL用这种加密来存储哈希密码?
这个问题对我有些帮助,但没有解决我的问题。
更新:实际上,我不使用经典的基于FORM的身份验证,而是使用HttpServletRequest#login()
编程式登录的自定义JSF表单,但我认为这不是问题。
我已经用Glassfish 4.1和为MySQL配置的JDBC Realm测试了一个简单的用例。
你可以设置一个简单的用户表:
即
INSERT INTO users (name, password, group) VALUES ("admin", SHA2("password", 256), "admins");
在管理控制台中,转至配置>安全>领域并编辑您的领域。
在“密码加密算法”字段中输入“AES”。
在“摘要算法”字段中输入“SHA-256”。
在“字符集”字段中输入“UTF-8”。
对于那些想要查看Glassfish如何在JDBCRealm中使用配置“密码加密算法”的人来说,以供将来参考。 我看了一下代码,它似乎根本不用:链接,固定链接。
链接地址: http://www.djcxy.com/p/49117.html上一篇: Password Encryption Algorithm in Glassfish 4
下一篇: How I can create new user from Java class to GlassFish?