2015-11-06 65 views
0

我有一個LDAP連接的問題。當我嘗試連接apache目錄工作室桌面時,我成功進行了身份驗證。但是當我嘗試用Java來做這件事時,它就會失敗。我認爲問題在於包含反斜槓「\」的用戶名。如何在org.apache.directory.ldap.client.api.LdapConnection中放置帶反斜槓的用戶名?

LdapConnection connection = new LdapNetworkConnection(ldapIp, ldapPort); 
connection.bind("uid=foo\\bar,ou=example,dc=example,dc=com", "mysEcretpa55"); 

在這種情況下,它說,

異常線程 「main」 org.apache.directory.api.ldap.model.exception.LdapInvalidDnException:意外的標記:乙

當我把4斜線它說:

LdapErr:DSID-0C0903C8,註釋:AcceptSecurityContext錯誤,數據52E, v2580

我看到52e是一個錯誤的憑據錯誤。我會再次重複,我在apache目錄工作室桌面應用程序驗證,它工作正常。

回答

1

這四個斜線:

connection.bind("uid=foo\\\\bar,ou=example,dc=example,dc=com", "mysEcretpa55"); 

結帳在Active Directory: Characters to Escape的文檔。

兩個反斜槓用於Java字符串轉義,所以您需要雙轉義,一次用於Java,一次用於LDAP語法,以獲得單個反斜槓低谷。

至於你得到LDAP錯誤,有一些案件時,Active Directory中拒絕了有效的密碼:例如,從客戶端不是域的一部分(Linux中),或者如果身份驗證時,您嘗試進行身份驗證的用戶無權登錄客戶端計算機。但請仔細檢查您的密碼。

結賬提示在this SO answer中提到了針對Windows域進行身份驗證的替代方法。