2016-12-22 73 views
0

我真的使用Apache LDAP API連接到MS的Active Directory,但I'm得到以下錯誤:錯誤時,MS LDAP使用Apache LDAP AIP

DEBUG#csmcrcApacheLdapClient ###匿名HTTP的bio-8080-exec-6 ###意外的錯誤連接到LDAP org.apache.directory.api.ldap.model.exception.LdapAuthenticationExcepti on:80090308:LdapErr:DSID-0C0903D9,註釋:AcceptSecurityContext錯誤,數據52e,v2580^@

在這種情況下,我只是在LdapConnectionConfig.Name和LdapConnect類的綁定方法中提供了LDAP用戶名和密碼。

基於一些研究和測試,我可以看到,當我提供用戶的完整DN(專有名稱)時,連接和綁定工作正常。

所以我的問題是:有沒有辦法使用Apache LDAP提供用戶名和密碼(而不是完整的DN)來連接並綁定到MS AD?

下面是源代碼的摘錄失敗:

LdapConnection conn = new LdapNetworkConnection(); 
 
connParams.setLdapHost(LDAP_HOST); 
 
connParams.setLdapPort(389); 
 
connParams.setName(test_user); 
 
connParams.setCredentials(TEST_USER_PASSWORD); 
 

 
LdapConnection connection = new LdapConnection(connParams); 
 

 
connection.bind(test_user, TEST_USER_PASSWORD);

而這一次是正常工作:

LdapConnection conn = new LdapNetworkConnection(); 
 
connParams.setLdapHost(LDAP_HOST); 
 
connParams.setLdapPort(389); 
 
connParams.setName(CN=test_user,DC=Example,DC=com); 
 
connParams.setCredentials(TEST_USER_PASSWORD); 
 

 
LdapConnection connection = new LdapConnection(connParams); 
 

 
connection.bind(CN=test_user,DC=Example,DC=com, TEST_USER_PASSWORD);

回答

0

您必須使用專有名稱進行綁定 - 畢竟,LDAP並不瞭解Active Directory。當然,您可以先使用服務帳戶來檢索sAMAccountName的dn。