2017-11-16 58 views
9

Używam SpringLDAP API wewnątrz sprężyny webapp oparte kwerendy ActiveDirectory, która jest obsługiwana w systemie Windows Server 2012. Po moich danych środowiskowych są: - Java 1.8.0_101, apache-tomcat-8.0.36, SpringMVC 4.3.1 & SpringLDAP 2.3.1Dlaczego filtry accountExpires i userAccountControl w zapytaniach SpringLDAP/plain Java AD nie działają zgodnie z oczekiwaniami?

Następująca kwerenda pobiera filtr AD dopasowanie kont w opartym na systemie Windows (opartym na C++/C) narzędziu zapytań (np. narzędzie Lepide AD Query), a także wtyczce LDAP Browser w środowisku Eclipse IDE BUT nie pobiera pasujących rekordów/kont AD, gdy są używane w środowisku Java (JNDI/Oparty na SpringLDAP API) kod & również w aplikacji opartej na języku Java JXplorer: -

(&(objectclass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(accountExpires>=131554368000000000)([email protected]*)) 

Próbuję uzyskać konto użytkownika, który jest aktywny, jeszcze nie minął podano datę i userPrincipalName wartość początkowa sznurkiem [email protected].

Poniżej znajduje się konfiguracja LDAP w pliku spring-servlet.xml: -

<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> 

Są takie filtry reklama obsługiwane przez Java/SpringLDAP API w ogóle? Jeśli tak, co należy zmienić, aby powyższy filtr zapytań AD działał (pobierać pasujące konta AD) w kodzie opartym na języku Java?

+0

proszę być bardziej szczegółowe, co masz na myśli przez „IT nie działa'? –

Odpowiedz

1

Proponuję użyć obiektu do budowania zapytań Spring LDAP w Javie, aby pomóc w zbudowaniu tego zapytania. Twoje pytanie wydaje się wskazywać, że skopiowałeś to zapytanie ze swojego środowiska C (Windows) do środowiska Java.

Chciałbym zacząć od budowania kwerendy z .gdzie() funkcji w Spring LDAP Stosowane tutaj i zobaczyć, czy to prowadzi do tego samego błędu: https://docs.spring.io/spring-ldap/docs/current/apidocs/org/springframework/ldap/query/LdapQueryBuilder.html