Shi*_*iva 7 java jndi spring-mvc active-directory spring-ldap
我使用的SpringLDAPAPI基于web应用的弹簧内查询在Windows Server 2012上承载的ActiveDirectory下面是我的环境信息: - ,
Java 1.8.0_101,&apache-tomcat-8.0.36SpringMVC 4.3.1SpringLDAP 2.3.1
以下AD筛选器查询在基于Windows(基于C++/C#)的查询工具(例如,Lepide AD查询工具)中获取匹配帐户,并且还在eclipse IDE中的LDAP浏览器插件中提取,但是当获取匹配的记录/ AD帐户时在Java(基于JNDI/SpringLDAP API)代码中以及在基于Java的应用程序JXplorer中使用: -
(&(objectclass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(accountExpires>=131554368000000000)(userPrincipalName=cgm@*))
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取一个活动的用户帐户,但是在给定日期并且userPrincipalName以字符串开头的值时尚未过期cgm@.
以下是spring-servlet.xml文件中的ldap配置: -
<util:map id="ldapBaseEnvProps">
<entry key="java.naming.ldap.attributes.binary" value="objectGUID"/>
</util:map>
<ldap:context-source id="pooledLdapContextSrc" url="ldap://dc.myadserver.com:3268" base="DC=myadserver,DC=com" username="CN=adusername,OU=Mkt-Managers,DC=myadserver,DC=com" password="*****" base-env-props-ref="ldapBaseEnvProps">
<ldap:pooling max-total="16" max-active="16" max-idle="8" min-idle="0" max-wait="90000" when-exhausted="BLOCK" test-on-borrow="true" test-while-idle="true"/>
</ldap:context-source>
Run Code Online (Sandbox Code Playgroud)
Java/SpringLDAP API是否支持这样的AD过滤器?如果是,需要更改上述AD查询过滤器才能在基于Java的代码中工作(获取匹配的AD帐户)?
小智 1
我建议在 Java 中使用 Spring LDAP 的查询构建器对象来帮助您构建该查询。您的问题似乎表明您将该查询从 C(Windows)环境复制到了 Java 环境中。
我将首先使用此处使用的 Spring LDAP 中的 .where() 函数构建查询,并查看它是否会导致相同的错误: https ://docs.spring.io/spring-ldap/docs/current/apidocs/org /springframework/ldap/query/LdapQueryBuilder.html
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |