ldap 认证 java_Java调用LDAP认证的例子

[ JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe   JDK6 API

import java.util.Hashtable; import javax.naming.AuthenticationException; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.Control; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class UserAuthenticate { private String URL = "ldap://localhost:389/"; private String BASEDN = "c=china,dc=jayway,dc=se";//root private String FACTORY = "com.sun.jndi.ldap.LdapCtxFactory"; private LdapContext ctx = null; private Hashtable env = null; private Control[] connCtls = null; //连接ldap服务器 private void LDAP_connect(){ env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,FACTORY); env.put(Context.PROVIDER_URL, URL+BASEDN);//LDAP server env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,c=china,dc=jayway,dc=se"); env.put(Context.SECURITY_CREDENTIALS, "mysecret"); //此处若不指定用户名和密码,则自动转换为匿名登录 try{ ctx = new InitialLdapContext(env,connCtls); }catch(javax.naming.AuthenticationException e){ System.out.println("Authentication faild: "+e.toString()); }catch(Exception e){ System.out.println("Something wrong while authenticating: "+e.toString()); } } //找到到entry的 DN String getUserDN(String email){ String userDN = ""; LDAP_connect(); try{ SearchControls constraints = new SearchControls(); constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration en = ctx.search("","mail="+email, constraints); //The UID you are going to query,* means all nodes if(en == null){ System.out.println("Have no NamingEnumeration."); } if(!en.hasMoreElements()){ System.out.println("Have no element."); } while (en != null && en.hasMoreElements()){//maybe more than one element Object obj = en.nextElement(); if(obj instanceof SearchResult){ SearchResult si = (SearchResult) obj; userDN += si.getName(); userDN += "," + BASEDN; } else{ System.out.println(obj); } System.out.println(); } }catch(Exception e){ System.out.println("Exception in search():"+e); } return userDN; } //验证 public boolean authenricate(String ID,String password){ boolean valide = false; String userDN = getUserDN(ID); try { ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,userDN); ctx.addToEnvironment(Context.SECURITY_CREDENTIALS,password); ctx.reconnect(connCtls); System.out.println(userDN + " is authenticated(验证成功!)"); valide = true; }catch (AuthenticationException e) { System.out.println(userDN + " is not authenticated"); System.out.println(e.toString()); valide = false; }catch (NamingException e) { System.out.println(userDN + " is not authenticated"); valide = false; } return valide; } }  [本文转http://googledave.javaeye.com/blog/438474ssi直译server side include ,服务器端包括关键字: tomcat ssi shtm]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值