Java JNDI对 LDAP数据库的访问

  1. import  java.util.Hashtable;  
  2.   
  3. import  javax.naming.Context;  
  4. import  javax.naming.NamingEnumeration;  
  5. import  javax.naming.NamingException;  
  6. import  javax.naming.directory.Attribute;  
  7. import  javax.naming.directory.Attributes;  
  8. import  javax.naming.directory.SearchControls;  
  9. import  javax.naming.directory.SearchResult;  
  10. import  javax.naming.ldap.InitialLdapContext;  
  11. import  javax.naming.ldap.LdapContext;  
  12.   
  13.   
  14.   
  15. public   class  LDAP{  
  16. public   static   void  main(String[] args){  
  17.   
  18.     System.out.println(getPassword("abc@test.com" ));  
  19.     }  
  20.       
  21.       
  22. public   static  String getPassword(String user){  
  23. String password="" ;     
  24. Attribute pass=null ;  
  25. String domain=user.split("@" )[ 1 ];  
  26. //System.out.println(domain);   
  27. String tmp[]=domain.split("//." );  
  28. StringBuffer dn1=new  StringBuffer( "" );  //通过用户名,解析根后缀.   
  29.   
  30. for ( int  i= 0 ;i<tmp.length;i++)   
  31.    { if  (i!= 0 ) dn1.append( "," );  
  32.        dn1=dn1.append("dc=" +tmp[i]);  
  33.      }      
  34. String dn=dn1.toString();  
  35.   
  36.        
  37. try {      
  38.     Hashtable env = new  Hashtable();  
  39.     env.put(Context.PROVIDER_URL,"ldap://192.168.1.50:389" );  
  40.     env.put(Context.SECURITY_AUTHENTICATION, "simple" );  
  41.     env.put(Context.SECURITY_PRINCIPAL, "cn=root" );  //用户名   
  42.     env.put(Context.SECURITY_CREDENTIALS, "111" );  //密码   
  43.     env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );  
  44.     LdapContext ctx = new  InitialLdapContext(env,  null );  
  45.      SearchControls constraints = new  SearchControls();  
  46.     constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);  
  47.     NamingEnumeration results = ctx.search(dn,"(mail=" +user+ ")" ,constraints);   
  48.               
  49. while  (results !=  null  && results.hasMore()){  
  50. SearchResult sr = (SearchResult) results.next();  
  51. Attributes attributes = sr.getAttributes();  
  52.      pass = attributes.get("Password" );  
  53. }  
  54. }catch (Exception e){  
  55.     e.getStackTrace();  
  56.     }  
  57. password=pass.toString();  
  58. return  password;       
  59. }  
  60.   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值