Java调用LDAP认证的例子
来源:互联网 发布:深圳淘宝培训班 编辑:程序博客网 时间:2024/06/04 18:11
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; } }
- Java调用LDAP认证的例子
- 一个ldap身份认证的具体例子
- LDAP密码认证例子
- Java实现LDAP认证(上)
- 【总结】JAVA集成LDAP认证
- Java调用Domino LDAP
- SSL + LDAP 认证的配置
- svn的ldap认证配置
- 使用JAVA库进行LDAP目录读取的例子
- 从LDAP目录服务中获取数据的Java例子
- LDAP认证
- LDAP 认证
- LDAP认证
- Java访问LDAP服务器认证代码示例
- JAVA中使用LDAP进行用户认证
- JAVA中使用LDAP进行用户认证
- JAVA中使用LDAP进行用户认证
- 一个ldap开发的例子
- Objective-C 的 self 和 super 详解
- java.lang.OutOfMemoryError: Java heap space
- Using -Xss to adjust Java default thread stack size
- Flex4 addElement()和addChild() 的区别
- JDK环境变量设置详解
- Java调用LDAP认证的例子
- web 开发 网站 记录
- 控制单击只有一个点
- Oracle知识点笔记(二)
- 关于切换城市的资料网址:
- 邂逅-------秋天的童话
- Tomcat 开发Comet实例
- SVN的简单应用
- copy_to_user和copy_from_user