分享

Java实现AD域登录认证

 三十的狼 2018-09-26
package com.app; import java.util.Hashtable; import javax.naming.AuthenticationException; import javax.naming.Context; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; public class AdLogin { public static void main(String[] args) { String userName = "username";//AD域认证,用户的登录UserName String password = "";//AD域认证,用户的登录PassWord String host = "xxx.xxx.xxx.xxx";//AD域IP,必须填写正确 String domain = "@xxx.xx";//域名后缀,例.@noker.cn.com String port = "389"; //端口,一般默认389 String url = new String("ldap://" + host + ":" + port);//固定写法 String user = userName.indexOf(domain) > 0 ? userName : userName + domain;//网上有别的方法,但是在我这儿都不好使,建议这么使用 Hashtable env = new Hashtable();//实例化一个Env DirContext ctx = null; env.put(Context.SECURITY_AUTHENTICATION, "simple");//LDAP访问安全级别(none,simple,strong),一种模式,这么写就行 env.put(Context.SECURITY_PRINCIPAL, user); //用户名 env.put(Context.SECURITY_CREDENTIALS, password);//密码 env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// LDAP工厂类 env.put(Context.PROVIDER_URL, url);//Url try { ctx = new InitialDirContext(env);// 初始化上下文 System.out.println("身份验证成功!"); } catch (AuthenticationException e) { System.out.println("身份验证失败!"); e.printStackTrace(); } catch (javax.naming.CommunicationException e) { System.out.println("AD域连接失败!"); e.printStackTrace(); } catch (Exception e) { System.out.println("身份验证未知异常!"); e.printStackTrace(); } finally{ if(null!=ctx){ try { ctx.close(); ctx=null; } catch (Exception e) { e.printStackTrace(); } } } } }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多