我需要在wildfly中存储ldap用户名和密码。我做了如下,但我的经理说我这样做不安全:
String ldapCredentials = System.getProperty("ldap.user");
byte[] credDecoded = Base64.getDecoder().decode(ldapCredentials == null ? "" : ldapCredentials);
String credentials = new String(credDecoded, StandardCharsets.UTF_8);
String[] ldapDecoded = credentials.split(",");
ldapSearchUser = ldapDecoded[0];
ldapSearchPassword = ldapDecoded[1];
在单机版中:
<system-properties>
<property name="ldap.user" value="randomvaluebase64"/>
</system-properties>
他告诉我,我需要使用安全默认的wildfly,我发现了很多关于它的东西,但我无法找到如何在java中获取比,任何想法?
1条答案
按热度按时间vojdkbi01#
我提供的原始答案仅适用于WildFly 23或更新版本。我会把它放在正确答案下面以供参考。
您将希望使用凭据存储,它使用JavaKeyStore加密内容。链接的文档将详细介绍,但this example class将展示如何检索凭证存储的内容。
要保护凭据存储区密码本身的安全,您有几个选项:
PBEwithMD5andDES
)现在是可强制执行的,所以我不推荐它,并且不会包含如何执行的说明。如果您能够升级到WildFly 23或更高版本,您将可以访问一个更安全的选项,如下所述。
至于添加LDAP凭据(以及保护凭据存储本身的密码),this blog post解释了如何将它们与加密表达式一起使用。这允许您在服务器配置中存储凭据存储区密码的加密副本。