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测试了一个简单的用例。

你可以设置一个简单的用户表:

  • 名称:存储用户名
  • 密码:存储用户密码的SHA-256哈希值(不含盐分)
  • 组:存储用户组(即管理员,用户)
  • 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?