當前,我正在使用用戶名和密碼作爲ldap的連接憑證(以便驗證AD的用戶)。使用NTLM安全協議連接到LDAP(Active Directory)
對於此處的身份驗證,我使用InitialDirContext創建了一個初始上下文(用於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);
}
catch (NamingException e) {
System.out.println("error")
}
我想改變這個代碼,因此它會驗證輸入的用戶名和密碼,使用NTLM對LDAP的憑據。
你能提供我任何例子嗎?
NTLM - 是微軟安全協議的套件,提供 - 驗證 - 誠信 - 保密
我不同意。當使用強密碼通過SSL傳輸BIND請求時,DIGEST-MD5比簡單認證更弱。 DIGEST-MD5要求LDAP目錄服務器能夠解密密碼,這意味着密碼必須使用可逆加密進行存儲。使用簡單的身份驗證,密碼可以存儲在單向散列中,如SSHA512,這比可逆加密更強。由於這個原因應該避免使用DIGEST-MD5。 –
我不同意你的發言。這會使任何共享的祕密機制過時。只要服務器受到保護,摘要就像每個祕密一樣安全。基本從未安全。這會使Active Directory與PKI不一樣。 –
感謝Michael的建議:) – user1931914