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("验证失败!!");
}
}
}
分享到:
相关推荐
打包命令为:mvn clean package Jar包运行命令为:java -jar C:\Users\z00459km\Desktop\demo-0.0.1-SNAPSHOT.jar 亲测AD域认证通过,内容包含两种认证信息写法。
验证AD域用户登录 ,传入用户名(userName)和密码(password)进行验证。
LDAP实现AD域账号验证
这是用java连接window server 的Acitive Directory进行用户登陆验证的代码,里面用的是用户名的登陆名进行验证,也可以是用户的其他信息(如邮箱等)进行验证。
用java语言实现的简单的kerberos,可以对客户端进行AS,tgs的认证
java JNDI方式修改AD域密码 免ssl验证方式修改AD域密码 LDAP SSL 证书 javassl 很实用的一段代码,免去了复杂的证书操作过程。
验证AD域账号登陆,获取AD域用户列表,获取用户邮箱,修改密码等AD域操作
JAVA通过LDAP+SSL(证书)实现用户和组织(部门)增删改查(Java代码部分),里面包含源码和文档,以便大家测试。
java通过LDAP验证Active Directory服务。获得用户信息。
domino利用java代码做AD验证,思路是:先取得AD的用户信息到domino.再在验证时根据输入的用户密码在domino中取得对应的AD用户到AD中验证
Web API 使用 java 来验证访问令牌。 有关协议在此方案和其他方案中的工作方式的详细信息,请参阅。 有关如何生成不记名令牌的信息,请参阅 ,然后在使用此令牌。 查看 ~/sample/*.saz 以了解其工作原理的示例
身份验证应用使用ldaps协议对AD 2003进行身份验证入门这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。先决条件AD服务器具有读/写访问权限的AD中的auth-app帐户主机(在JVM的keystore中...
此示例演示了如何从 Java 应用程序和调用一些 API 对 Office 365 用户进行身份验证。 此示例使用获取验证令牌,然后使用它们调用特定的 API。 详细地说,该示例执行以下操作: 创建访问和刷新令牌以调用 Azure AD ...
AD310小组项目-战舰作业5:战舰,界面设计 教育目标 为更大的项目设计子系统级接口 获得模型-视图-控制器设计模式的经验 说明 在这个任务中,每个团队都将开始实施我们之前检查过的战舰游戏。 在这个阶段,团队将...
identity-java-spring-tutorial教程:使您的Java Spring MVC Web应用程序能够使用Microsoft身份平台登录用户,保护端点,调用API 以及 (Azure AD)和 (Azure AD B2C)对Azure云生态系统至关重要。 本教程旨在为您...
选择AD作为身份验证类型时,这是必需的。 2.1。 设置“ LDAP_TYPE” LDAP的有效LDAP ,Active Directory的无/空 2.2。 设置“ LDAP URL” 有时,这将是“ ldap://test.com:389”并直接进入ldap端口。 在多域...
服务反馈系统java源码 这个用于 Java 的 ADAL 库将不再获得新的功能改进。 相反,使用新的 . 如果您正在开始一个新项目,您可以从 开始以了解有关场景、用法和相关概念的详细信息。 如果您的应用程序使用以前的 ADAL...
我们建议使用的身份来处理身份验证。 要求 Java 7(或更高版本) Android 1.6(或更高版本) 支持的Google API 您可以在下面找到可用API的列表,也可以在上找到已发布的软件包。 原料药 版本号 AI平台培训和预测...
Google DoubleClick库该库支持Java中DoubleClick Ad Exchange的RTB开发。 doubleclick-core模块包含DoubleClick的RTB模型以及相关的功能,例如加密和元数据。 第二个模块doubleclick-openrtb提供DoubleClick的模型/...
* [a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction) [a-z&&[^bc]] 从a 到 z, 但 b 和 c 除外: [ad-z] (子集) * [a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction...