2017-11-16 19 views
9

Tôi đang sử dụng SpringLDAP API trong mùa xuân webapp dựa để truy vấn ActiveDirectory được lưu trữ trên Windows Server 2012. Sau đây là chi tiết môi trường của tôi: - Java 1.8.0_101, apache-tomcat-8.0.36, SpringMVC 4.3.1 & SpringLDAP 2.3.1Tại sao bộ lọc accountExpires và userAccountControl trong truy vấn Spring ADAP/plain AD không hoạt động như mong đợi?

Các truy vấn lọc AD sau fetches các khớp các công cụ truy vấn dựa trên windows (C++/C#) (ví dụ, công cụ truy vấn AD Lepide) và cũng trong trình cắm LDAP Browser trong IDE nhật thực NHƯ không tìm nạp các bản ghi/tài khoản AD phù hợp khi được sử dụng trong Java (JNDI)/API dựa trên SpringLDAP) & cũng trong ứng dụng dựa trên Java JXplorer: -

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

Tôi đang cố gắng để có được một tài khoản người dùng đó là ACTIVE, chưa hết hạn được đưa ra một ngày và với userPrincipalName giá trị bắt đầu với chuỗi [email protected].

Sau đây là cấu hình ldap bên trong file 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> 

Lọc nước AD như hỗ trợ bởi Java/SpringLDAP API ở tất cả? Nếu có, những gì cần phải được thay đổi để bộ lọc truy vấn AD ở trên hoạt động (tìm nạp (các) tài khoản AD phù hợp) trong mã dựa trên Java?

+0

xin được cụ thể hơn, điều gì làm bạn có ý nghĩa bởi 'Nó không hoạt động'? –

Trả lời

1

Tôi khuyên bạn nên sử dụng đối tượng trình tạo truy vấn của Spring LDAP trong Java để giúp bạn tạo truy vấn đó. Câu hỏi của bạn dường như chỉ ra rằng bạn đã sao chép truy vấn đó từ môi trường C (cửa sổ) vào môi trường Java của bạn.

Tôi sẽ bắt đầu bằng cách xây dựng các truy vấn với .where() chức năng trong mùa xuân LDAP như được sử dụng ở đây và nhìn thấy nếu nó kết quả trong các lỗi tương tự: https://docs.spring.io/spring-ldap/docs/current/apidocs/org/springframework/ldap/query/LdapQueryBuilder.html

Các vấn đề liên quan