java
- package ldap;
- import java.util.Hashtable;
- import javax.naming.Context;
- import javax.naming.directory.DirContext;
- import javax.naming.directory.InitialDirContext;
- public class ldap {
- private String host = "ldap://192.168.X.X:389";
- public boolean login(String userName, String password) {
- boolean result = true;
- DirContext ctx = null;
- Hashtable<String, String> env = new Hashtable<String, String>();
- env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
- env.put(Context.PROVIDER_URL,host); //LDAP host
- env.put(Context.SECURITY_AUTHENTICATION, "simple"); //簡單模式進行連接
- env.put(Context.SECURITY_PRINCIPAL, "cn=" + userName + ",dc=XX,dc=XX");//用戶名
- env.put(Context.SECURITY_CREDENTIALS, password); //密碼傳進去
- try {
- ctx = new InitialDirContext(env);
- }
- catch (Exception e) {
- result = false;
- }
- /*
- * 關閉連接
- */
- finally
- {
- if (ctx != null)
- {
- try {
- ctx.close();
- }
- catch (Exception e) {
- result = false;
- }
- }
- }
- return result;
- }
- }
jsp
- <%
- if(request.getParameter("accountName") !=null && request.getParameter("passWord") != null){
- String accountName = request.getParameter("accountName"); //獲取html輸入框的數值
- String passWord = request.getParameter("passWord");
- ldap lp=new ldap(); //實例化
- if(lp.login(accountName,passWord)) //傳參,返回ture或者false
- {驗證通過的動作代碼}
- }
2012-8-29
上面的方法是隻能適用於用戶在根目錄下,DN沒有ou這個選項的驗證
因爲組織結構的調整和整合,目錄級別發生變動,會有多個ou,會有子目錄。所以這個驗證就出現不能登錄的情況了。