【发布时间】:2011-12-16 18:51:15
【问题描述】:
我目前正在将 Web 应用程序中的密码处理从 unsalted MD5 更改为 bcrypt。这是一个标准的 JSF 应用程序,在 Glassfish 3.0.1 上运行。
使用 jBCrypt 可以很容易地创建和存储哈希值。但是现在我不知道如何在用户登录时在实际身份验证中使用 bcrypt。由于它是 JSF,因此使用 HttpServletRequest#login 方法触发登录,其余的由 Java EE 堆栈和 Glassfish 处理。
简单地将安全领域摘要算法设置为“无”,然后在将密码传递给登录方法之前对其进行哈希处理是行不通的,因为我没有在创建哈希时最初使用的生成的盐 jBCrypt。
我也考虑过提供自定义安全领域的实现,但对于这么小的变化来说,这似乎有很多工作。
有没有更简单的解决方案?或者有人已经实现了类似的安全领域?
【问题讨论】:
-
这是你仍然感兴趣的东西吗?我为我当前的项目构建了一个小自定义领域。如果你告诉我,我会清理它并把它和一些文档放在 github 上。
-
@ChadWilson,我很想看看你为此做了什么。
-
快速仅供参考:最后我将 Glassfish 中的摘要算法设置为“无”并在应用程序中实现散列。不幸的是,我无法使用 bcrypt(没有足够的时间进行必要的更改)。相反,应用程序现在使用具有多次迭代的慢散列算法,从固定盐开始,然后在所有后续迭代中使用最后一个散列作为盐。不是最好的解决方案,但仍然相当安全。
标签: java jakarta-ee glassfish bcrypt jdbcrealm