使用Java Spring LDAP启动TLS

问题描述 投票:0回答:1

我正在尝试使用证书与我的OpenLDAP服务器建立连接。这是我的代码:

            // Set up environment for creating initial context
            Hashtable env = new Hashtable(11);
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

            // Must use the name of the server that is found in its certificate
            env.put(Context.PROVIDER_URL, "ldap://ldap.url");
            env.put(Context.SECURITY_AUTHENTICATION, "EXTERNAL");

            LdapContextSource ldapContextSource = new LdapContextSource();
            ldapContextSource.setBaseEnvironmentProperties(env);
            LdapTemplate ldapTemplate = new LdapTemplate(ldapContextSource);

            // Request all users
            log.info(ldapUserRepo.testCtx(ldapTemplate).toString());

代码的最后一行基本上使用ldapTemplate请求所有用户。在将身份验证内容添加到LDAP服务器之前,此方法有效。然后代码记录此错误:

LDAP:错误代码7-SASL(-4):无可用的机制

我知道此错误是因为我们没有使用TLS,因为只有在我忘记在ldapsearch命令中输入-Z时,才会出现此错误。我不是安全人员,还是Java的新手,但是我假设我缺少某种使用TLS的配置?

java spring security ssl ldap
1个回答
0
投票

这可能无法解决您的问题。但是我认为最好在您的上下文中将security_protocol指定为ssl ...

env.put(Context.SECURITY_PROTOCOL, "ssl");
© www.soinside.com 2019 - 2024. All rights reserved.