我目前正在实现一个WebDAV文件浏览器(后端是基于FlySystem)在一个网页。一切都可以工作,但我不太确定如何在数据库中正确存储用户的凭据(目标是用户只需要登录门户(基于OpenID Connect,我们的WebDAV解决方案不支持))。
将它们以明文形式存储显然不是解决方案,并且由于nonce的存在,将它们存储为MD5哈希并使用摘要认证也不起作用。
任何想法?
您可以并且应该存储摘要规范中的a1md5因子。这是一种非常安全的散列形式,并且与摘要认证兼容。
对于这样做的java代码,请参阅Milton webdav的DigestGenerator,其中您将使用encodePasswordInA1Format方法:public String encodePasswordInA1Format( String username, String realm, String password ) {
String a1 = username + ":" + realm + ":" + password;
String a1Md5 = DigestUtils.md5Hex( a1 );
return a1Md5;
}
https://github.com/miltonio/milton2/blob/master/milton-server-ce/src/main/java/io/milton/http/http11/auth/DigestGenerator.java