Java实现AD域登录认证

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Pnoter/article/details/52115898

最近公司派遣去乙方公司做项目开发,之前做好了的登录模块,按理来说是可以完全复用的,但是乙方客户提出要求,要用AD域登录认证的方式进行登录我们开发的Java Web系统,于是上网搜集了相关的资料,并运用到系统中。
以下为分享的资料:
【注意】jdk1.3版本以上

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";//域名后缀,例[email protected]
        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();
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Pnoter/article/details/52115898