java串連微軟AD進行使用者驗證

來源:互聯網
上載者:User

  import java.util.Hashtable;

  import javax.naming.Context;

  import javax.naming.NamingException;

  import javax.naming.directory.DirContext;

  import javax.naming.directory.InitialDirContext;

  /**

  * @author winter

  *

  */

  public class Test {

  /**

  * @param args

  */

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  String userName = "xxxxx";   //使用者名稱稱

  String password = "xxxxx";   //密碼

  String host = "xxx.xxx.xxx.xxx";  //AD伺服器

  String port = "389";              //連接埠

  String domain = "@xxx.com";    //郵箱的尾碼名

  String url = new String("ldap://" + host + ":" + port);

  String user = userName.indexOf(domain) > 0 ? userName : userName + domain;

  Hashtable env = new Hashtable();

  DirContext ctx;

  env.put(Context.SECURITY_AUTHENTICATION, "simple");

  env.put(Context.SECURITY_PRINCIPAL, user); //不帶郵箱尾碼名的話,會報錯,具體原因還未探究。高手可以解釋分享。

  env.put(Context.SECURITY_CREDENTIALS, password);

  env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");

  env.put(Context.PROVIDER_URL, url);

  try {

  ctx = new InitialDirContext(env);

  ctx.close();

  System.out.println("驗證成功!");

  } catch (NamingException err) {

  err.printStackTrace();

  System.out.println("驗證失敗!");

  }

  }

  }

 

 ==============================================================================   Properties env = new Properties();
        String ldapURL = "ldap://" + server + ":" + port;
       
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");  
        env.put(Context.SECURITY_AUTHENTICATION, "simple");  
        env.put(Context.SECURITY_PRINCIPAL, user);  
        env.put(Context.SECURITY_CREDENTIALS, passwd);  
        env.put(Context.PROVIDER_URL, ldapURL);
LdapContext ctx = new InitialLdapContext(env,null);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);  
            NamingEnumeration results = ctx.search(baseDN, "CN=" + testUser, searchCtls);  
            while (results.hasMoreElements()) {  
                SearchResult sr = (SearchResult) results.next();     
                Attributes attributes = sr.getAttributes();
                NamingEnumeration values = attributes.getAll();
                while(values.hasMore()){
                 Attribute attr = (Attribute)values.next();
     Enumeration vals = attr.getAll();
     while(vals.hasMoreElements()){
     Object o = vals.nextElement();
     System.out.println(attr.getID()+"--------------"+o.toString());
     }
                }
                
            }
讀取一個使用者資訊 用cn=* 可以讀取所有的..

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.