Java 域登录 实现
前言
因为最近公司需要项目进行域账号的登录,查找了许多资料,都是零零散散的,所以在这里整理一下步骤,希望帮到大家
新建一个测试类
package com.numberone.web.controller.common;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.Hashtable;
/**
* Created by kelvan.cai on 2019/6/10 0010.
*/
public class AdLogin {
public static void main(String[] args) {
String userName = "123@qq.com";//AD域认证,用户的登录UserName
String password = "123";//AD域认证,用户的登录PassWord
String host = "*.*.*.*";//AD域IP,必须填写正确 *号改为自己的IP
String domain = "@qq.com";//域名后缀,例.@noker.cn.com 对应userName@
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 <