package com.wanda.sso.client.servlet;
import java.util.HashMap;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
/**
* *
*
* @author winter *
*/
public class AdTools {
/**
* AD 验证
*
* @param userName
* @param passWord
* @return
*/
public static boolean adTrueOrFalse(String userName, String passWord) {
String url = new String("ldap://" + SsoClientUtils.AD_SERVER_IP + ":"
+ SsoClientUtils.AD_SERVER_PORT);
String user = userName.indexOf(SsoClientUtils.AD_SERVER_DOMAIN) > 0 ? userName
: userName + SsoClientUtils.AD_SERVER_DOMAIN;
Hashtable env = new Hashtable();
DirContext ctx;
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, passWord);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialDirContext(env);
ctx.close();
// System.out.println("验证成功!");
return true;
} catch (NamingException err) {
err.printStackTrace();
// System.out.println("验证失败!");
return false;
}
}
// 使用LDAP验证密码
public static void main(String[] args) {
String userName = "xueqiang"; // 用户名称
String passwd = "123456";
String host = "10.0.4.26"; // AD服务器
String port = "389"; // 端口
String domain = "@wanda-dev.cn"; // 邮箱的后缀名
String url = new String("ldap://" + host + ":" + port);
String user = userName.indexOf(domain) > 0 ? userName : userName
+ domain;
Hashtable<String, String> env = new Hashtable<String ,String>();
DirContext ctx = null;
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
if ("".equals(passwd.trim())) {
passwd = null;
System.out.println("密码不能为空!!");
}
env.put(Context.SECURITY_CREDENTIALS, passwd);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工厂类
env.put(Context.PROVIDER_URL, url);
try {
ctx = new InitialDirContext(env);
ctx.close();
System.out.println("验证成功!!");
} catch (NamingException e) {
e.printStackTrace();
System.out.print("验证失败!!");
}
}
}
分享到:
相关推荐
10. **测试与部署**: 完成AD验证功能后,需要在测试环境中进行充分的测试,确保在不同环境和条件下都能正常工作。在生产环境中部署时,应确保所有配置信息的安全存储和传递。 以上就是关于Java验证AD域用户登录涉及...
下面我们将深入探讨如何使用Java和SpringBoot实现基于LDAP的AD域账号验证。 首先,我们需要了解LDAP的基本结构。LDAP目录通常采用树形结构,其中包含多个条目(entries),每个条目都有唯一的DN(Distinguished ...
打包命令为:mvn clean package Jar包运行命令为:java -jar C:\Users\z00459km\Desktop\demo-0.0.1-SNAPSHOT.jar 亲测AD域认证通过,内容包含两种认证信息写法。
### Java 实现 AD 域认证详解 #### 一、AD域认证简介 Active Directory (AD) 是一种基于 Windows Server 的目录服务,它允许管理员管理网络中的用户、组和其他资源。AD域认证则是指通过AD服务对用户身份进行验证的...
本文将详细介绍如何使用 Java 实现与 Active Directory 的连接以及进行用户登录验证的过程。 #### 二、关键概念与术语解释 1. **Active Directory (AD)**:一种由微软开发的目录服务,用于Windows Server操作系统...
在本文中,我们将深入探讨如何使用Java JNDI来修改AD域密码,并重点讲解如何实现免SSL验证的方式。 首先,让我们了解JNDI。JNDI是Java平台的一个接口,它提供了一组API,允许开发者查找和绑定网络资源,如DNS记录、...
在这篇文章中,我们将探讨使用 JAVA 实现 LDAP 的 AD 域免证书查询、修改、删除、新增、启用、禁用和修改密码的操作。 首先,让我们了解什么是 LDAP 和 AD 域。LDAP(Lightweight Directory Access Protocol)是一...
Java语言实现的Kerberos允许开发者在Java应用中集成这种强大的安全机制。 **Java与Kerberos的结合** Java中的Kerberos支持主要体现在Java的`javax.security.auth.kerberos`包中,提供了与Kerberos协议交互的一系列...
总的来说,Java通过Ldap操作AD域涉及网络连接、身份验证、目录查询以及可能的SSL安全通信。理解这些概念和API的使用是实现AD域集成的关键。通过以上介绍和示例代码,你应该能够开始编写自己的AD域操作功能。记得在...
在开发过程中,可以使用Apache Directory Studio这样的工具进行调试和验证,它提供了图形化的界面,方便查看和管理AD域对象。同时,理解AD域的架构和目录结构也是成功实现这些功能的关键。 总的来说,Java AD域插入...
NT LAN Manager(NTLM)是一种微软实现的身份验证协议,常用于Windows环境下的AD域身份验证。下面我们将详细探讨如何在Java环境中利用NTLM协议集成AD域进行登录,并了解相关文件的作用。 首先,让我们理解NTLM协议...
Java操控AD域源码主要涉及的是使用Java编程语言与Active Directory(AD)域进行交互,实现AD用户账户的管理操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Check)等功能。在企业环境中,AD域是用于...
本文将深入探讨如何使用Java通过LDAP(轻量级目录访问协议)和SSL(安全套接层)来实现用户和组织(部门)的增删改查操作,并结合证书确保通信的安全性。这些功能通常用于大型企业的用户管理,例如Active Directory...
Java作为跨平台的编程语言,提供了多种库和工具来与AD进行交互,实现用户验证、权限管理等功能。本文将深入探讨如何使用Java进行AD域操作。 首先,我们需要了解Java中的JNDI(Java Naming and Directory Interface...
验证AD域账号登陆,获取AD域用户列表,获取用户邮箱,修改密码等AD域操作
Java对接AD域集成是企业级应用中常见的需求,主要用于实现用户身份验证和权限管理。AD(Active Directory)是微软提供的一种目录服务,用于管理和存储有关网络对象的信息,如用户、计算机、组等。通过Java与AD域进行...
6. 软件开发:如果你打算编写自己的AD客户端或服务,你需要掌握相应的编程语言(如C、Python、Java等)以及相关的开发库和API。 7. 安全性:理解AD的安全模型,包括权限分配、审核和日志记录,以确保网络安全和数据...
为了通过Java实现对Active Directory的验证,我们可以使用JNDI API(Java Naming and Directory Interface),它提供了与不同目录服务(如LDAP)交互的接口。 下面是一段示例代码,展示了如何使用Java进行验证: `...
在Java开发中,"JAVA对接AD域集成"指的是将Java应用程序与Active Directory (AD) 域服务进行整合,以实现用户身份验证、权限管理等功能。以下是对代码片段中的关键知识点的详细解释: 1. **LDAP (轻量级目录访问...
在这里,Tomcat可能被用作处理HTTP请求,并调用Java代码来执行AD验证逻辑。 6. **Domino LDAP(Lightweight Directory Access Protocol)**: LDAP是一种协议,用于访问和操作目录服务,如AD。Domino服务器可以...