encryption - 如何在 Wildfly 中加密 bindCredential 密码?

标签 encryption active-directory wildfly

我正在尝试在 Wildfly (8.2.1) 中配置安全域以绑定(bind)到我们的 Active Directory。我需要尝试找到一种方法来加密bindCredential密码。 我可以使用 Picketbox 很好地加密数据源密码。 我只能找到对 JBoss V6.x 或更早版本进行这种加密,并且所采用的方法似乎在 Wildfly 中不再存在。 有没有人这样做过并愿意分享如何实现它。

这是我的安全域:

    <security-domain name="ADDomain" cache-type="default">
            <authentication>
                    <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" >
                            <module-option name="java.naming.provider.url" value="ldap://ad.mycompany.com:389/"/>
                            <module-option name="bindDN" value="cn=myuserid"/>
                            <module-option name="bindCredential" value="mypassword"/> <--- I want to encrypt this. 
                            <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
                            <module-option name="java.naming.security.authentication" value="simple"/>
                            <module-option name="baseCtxDN" value="dc=mycompany,dc=com"/>
                            <module-option name="baseFilter" value="(uid={0})"/>
                            <module-option name="rolesCtxDN" value="dc=mycompany,dc=com"/>
                            <module-option name="roleFilter" value="(uniqueMember={1})"/>
                            <module-option name="roleAttributeID" value="cn"/>
                            <module-option name="roleNameAttributeID" value="cn"/>
                            <module-option name="roleRecursion" value="0"/>
                            <module-option name="throwValidateError" value="true"/>
                            <module-option name="java.naming.referral" value="follow"/>
                            <module-option name="referralUserAttributeIDToCheck" value="uniqueMember"/>
                    </login-module>
            </authentication>
    </security-domain>

最佳答案

使用安全库。您可以找到chapter about Password Vaults在 JBoss EAP 文档中 - WildFly 的配置应该相同。

一般来说,您需要执行以下步骤。

  1. 使用 secret key 创建 JCEKS keystore
keytool -genseckey -alias vault -storetype jceks -keyalg AES -keysize 128 \
    -storepass vault22 -keypass vault22 \
    -dname "CN=vault, O=ACME, C=CZ" \
    -keystore /path/to/vault.keystore
  • 创建保管库目录,创建保管库本身并将您的密码放入其中
  • mkdir /path/to/vault-data-dir
    ${JBOSS_HOME}/bin/vault.sh -a passa -b LdapLogin \
        -e /path/to/vault-data-dir \
        -i 22 -k /path/to/vault.keystore -p vault22 -s 87654321 -v vault \
        -x mypassword
    
  • 在 WildFly 中配置保管库:
  • ${JBOSS_HOME}/bin/jboss-cli.sh \
        -c '/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "/path/to/vault.keystore"), ("KEYSTORE_PASSWORD" => "MASK-Ci5JS1kjxPX"), ("KEYSTORE_ALIAS" => "vault"), ("SALT" => "87654321"),("ITERATION_COUNT" => "22"), ("ENC_FILE_DIR" => "/path/to/vault-data-dir/")])'
    
  • 在登录模块中使用保管密码
  • <module-option name="bindCredential" value="${VAULT::LdapLogin::passa::1}"/>
    

    关于encryption - 如何在 Wildfly 中加密 bindCredential 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32191742/

    相关文章:

    pdf - iText - 仅加密嵌入文件

    c# - 将 Active Directory 用户和组导入 SQL Server(可能通过 c#)

    c# - 使用 Web API 的安全实现

    security - javax.ejb.EJBAccessException : JBAS013323: Invalid User

    postgresql - 从 wildfly 设置 Postgres SSL 连接

    node.js - PyCrypto 和 Node.JS Crypto 库中的 AES 是否相同

    javascript - js中信号协议(protocol)的工作示例

    python - authGSSServerInit 极慢

    SSL 在 Wildfly 中不起作用

    c++ - 为什么这个微小的 RSA 实现会给出错误的结果?