gpt4 book ai didi

java - 从不使用 spring ldap 设置 tls_reqcert

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:26 25 4
gpt4 key购买 nike

我使用 Spring LDAP 通过 ldaps 连接到服务器。

是否可以永远设置 tls_reqcert?

现在我在 application.properties 文件中:

ldap.url=ldaps://192.168.0.0:636
ldap.userDn=
ldap.password=
ldap.base=
ldap.clean=true
ldap.maxActive=350

我尝试:

public class SslLdap extends DefaultTlsDirContextAuthenticationStrategy {

private static final String SIMPLE_AUTHENTICATION = "simple";

protected void applyAuthentication(LdapContext ctx, String userDn, String password) throws NamingException {


System.setProperty("javax.net.ssl.trustStore","/home/user/truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword","secret");

ctx.addToEnvironment(Context.SECURITY_AUTHENTICATION, SIMPLE_AUTHENTICATION);
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, userDn);
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);

}


}

最佳答案

答案是否定的。但如果您想将 SSL 与 Spring Ldap 一起使用,您可以这样做:

1) 将信任库(带有自证书)添加到/WEB-INF/文件夹中。

您必须创建一个 LdapContextSource 类,如下所示:

public class SslLdap extends LdapContextSource{

this.setUrl("ldaps://url:636");

System.setProperty("javax.net.ssl.trustStore", ctx.getRealPath( "WEB-INF/truststore.jks" ));
System.setProperty("javax.net.ssl.trustStorePassword", keyStorePassword);


super.afterPropertiesSet();

Hashtable<String, Object> envProps = new Hashtable<String, Object>();

envProps.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
envProps.put(Context.PROVIDER_URL, "ldaps://url:636");
envProps.put(Context.SECURITY_AUTHENTICATION, "simple");
envProps.put(Context.SECURITY_PRINCIPAL, "userDN");
envProps.put(Context.SECURITY_CREDENTIALS, "pass");


envProps.put("java.naming.security.protocol", "ssl");
envProps.put("com.sun.jndi.ldap.connect.pool", "true");

super.setBaseEnvironmentProperties(envProps);
super.afterPropertiesSet();

}

在你的 Bean 集中:

<!-- LDAPS config -->
<bean id="contextSourceTarget" class="com.yourpackage.SslLdap">
<property name="url" value="${ldap.url}" />
<property name="base" value="${ldap.base}" />
<property name="userDn" value="${ldap.userDn}" />
<property name="password" value="${ldap.password}" />
<property name="pooled" value="false" />

</bean>

我认为您可以删除该属性。

关于java - 从不使用 spring ldap 设置 tls_reqcert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com