将 WebDAV 凭据安全地存储在数据库中

Securely storing WebDAV credentials in a database

我目前正在网页中实现 WebDAV FileBrowser(后端基于 FlySystem)。一切正常,但我不太确定如何在数据库中正确存储用户的凭据(目标是用户只需登录门户(基于 OpenID Connect,我们的 WebDAV 解决方案不支持) )).

以明文形式存储它们显然不是解决方案,将它们存储为 MD5 散列并使用摘要式身份验证不起作用,因为随机数。

有什么想法吗?

您可以而且应该存储摘要规范中的 a1md5 因子。这是一种非常安全的散列形式,并且与 Digest 身份验证兼容。

对于执行此操作的 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