2012-08-13 165 views
1

目前,我正在使用用戶名和密碼作爲ldap的連接憑證(以便在本AD上進行搜索)。使用NTLM連接到LDAP(Active Directory)

我的代碼如下所示:

env = new Hashtable(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
env.put(Context.PROVIDER_URL, ...); 
env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
env.put(Context.SECURITY_PRINCIPAL, ...); 
env.put(Context.SECURITY_CREDENTIALS, ...); 
env.put("com.sun.jndi.ldap.connect.timeout", ...); 

try { 
    ctx = new InitialLdapContext(env, null); 
} 
catch (NamingException e) { 
    System.out.println("error") 
} 

我想改變這個代碼,因此它不會使用用戶+密碼作爲對LDAP的憑據。我希望它使用NTLM進行身份驗證。

我該怎麼辦?你能提供一個例子嗎?

+0

你試過jcifs嗎? – 2012-08-13 13:26:24

回答

0

沒有機會,JGSS不支持NTLM作爲SASL機制。使用Kerberos(GSS-API)和SASL。

+0

你能解釋一下嗎? – Matan 2012-08-13 10:12:17

+0

在這裏閱讀我的答案:http://stackoverflow.com/a/7786225/696632 – 2012-08-13 10:27:12

+0

試過它沒有運氣。你可以請回答我的問題:http://stackoverflow.com/questions/12025998/javax-naming-authenticationexception?謝謝! – Matan 2012-08-19 11:54:07

相關問題