gpt4 book ai didi

ssl - Spring Ldap 解除与 tls 连接的绑定(bind)。验证失败

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

我正在使用 Spring Ldap 与需要 tls 身份验证的 openLdap 服务器进行交互。为了进行身份验证,我必须将 contextSource 设置为:

TransactionAwareContextSourceProxy ctx = (TransactionAwareContextSourceProxy) ldapTemplate.getContextSource();
SecureLdapContextSource secureContextSource = new SecureLdapContextSource();
secureContextSource.afterPropertiesSet();
ldapTemplate.setContextSource(secureContextSource);

SecureLdapContextSource 在哪里

public void afterPropertiesSet() {
//http://forum.spring.io/forum/spring-projects/data/ldap/33910-ldaps-external-certificate-contains-unsupported-critical-extensions-2-5-29-17
this.setUrl("ldaps://myLdapServer.com:636/");
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://myLdapServer.com:636/");
envProps.put(Context.SECURITY_PRINCIPAL, "adminUsername");
envProps.put(Context.SECURITY_CREDENTIALS, "adminPwd");
envProps.put(Context.SECURITY_AUTHENTICATION, "simple");
envProps.put("java.naming.security.protocol", "ssl");
envProps.put("com.sun.jndi.ldap.connect.pool", "true");
envProps.put("java.naming.ldap.factory.socket", "org.springframework.ldap.samples.useradmin.EmblSSLSocketFactory");
System.setProperty("java.naming.ldap.factory.socket", "org.springframework.ldap.samples.useradmin.EmblSSLSocketFactory");

//set the environment
super.setupAuthenticatedEnvironment(envProps, keyStore, keyStorePassword);
// set the base environment again
super.setBaseEnvironmentProperties(envProps);
System.setProperty("javax.net.ssl.keyStore", keyStore);
System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword);
// it is necessary to call super.afterPropertiesSet() again!!!
super.afterPropertiesSet();
}

之后,我就可以通过这样的调用对管理员进行身份验证了:

ldapTemplate.authenticate(queryAdmin, password);

然后是我的问题。我想使用 unbind 方法从 ldap 中删除一个用户:ldapTemplate.unbind("dnOfMyWorsteColeague");

在测试中运行它,我从 ldap 服务器得到以下异常:[LDAP:错误代码 8 - 修改需要身份验证]

因此,我不能(因为我在使用我的旧 ldap 界面,没有 Spring Ldap)进行身份验证并保持 session 执行只有管理员才能执行的命令。

有什么想法吗?我想为此使用 Spring Ldap...

感谢您的帮助, 马可

最佳答案

我知道这个 Q 太老了,我对 LDAP 也比较陌生,但我认为 unbind() 用于关闭 LDAP 连接,而不是删除用户。为此,您可以使用 delete()

https://www.ldap.com/the-ldap-delete-operation

关于ssl - Spring Ldap 解除与 tls 连接的绑定(bind)。验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240171/

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