我开始设置基本身份验证的项目。我现在想切换到摘要式身份验证。问题是只有在我提供实际密码的哈希值而不是实际密码时才验证身份验证。
我做了以下操作从BASIC切换到DIGEST:
在我的web.xml中将auth-method更改为DIGEST
将我的JDBC Realm的JAAS上下文更改为“jdbcDigestRealm”
在我的数据库中,我曾经使用“密码”作为密码,我更改为MD5的结果(webuser:postgres:webuser)(其中webuser是登录名,webuser是密码,postgres是领域),换句话说,我将表格中的密码设置为c3c2681ed07a5a2a5cb772061a8385e8。
我遇到的问题是,当我尝试访问资源时,浏览器会显示登录弹出窗口,但使用“webuser”作为密码不起作用。但是,使用“c3c2681ed07a5a2a5cb772061a8385e8”作为密码可以正常工作。看起来我还处于BASIC身份验证模式。
有任何线索吗?
谢谢!
答案 0 :(得分:3)
DIGEST auth方法与HTTP摘要式身份验证相同。它只是加密浏览器和服务器之间的通信。服务器仍然以明文形式提供密码。
来自http://java.boot.by/wcd-guide/ch05s03.html:
基本身份验证和摘要身份验证之间的区别在于 浏览器和服务器之间的网络连接,密码是 加密,即使在非SSL连接上也是如此。在服务器中,密码 可以以明文或加密文本存储,这对所有人都适用 登录方法与应用程序的选择无关 部署者。
您应该将digest-algorithm
的{{1}}属性设置为JDBC Realm
。之后,JDBC Realm将对密码进行哈希处理。
答案 1 :(得分:1)
也许您可能需要将领域视图中的摘要算法从glassfish控制台更改为MD5。 GlassFish 3.0。*的默认值仍为MD5,但是从GlassFish 3.1。*已更改为SHA-256。这可能是解决方案。
阿德姆