ldap验证的工具类,具体的一些参数注释请参照相关文档。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingEnumeration;
import javax.naming.directory.*;
import javax.naming.ldap.InitialLdapContext;
import java.util.Hashtable;
/**
* Ldap验证工具类,验证用户名和密码是否存在ldap服务器中。
*
* @author 张国明 guomingzhang2008@gmail.com
* @version 2012-11-15 上午9:32
*/
public class LdapUtil {
private final Log log = LogFactory.getLog(getClass());
/**
* 连接url
*/
private static final String URL = "ldap://bj-dcd.zhanggmsoft.com:389";
/**
* 系统用户名
*/
private static final String PRINCIPAL = "t-bysystem";
/**
* 系统密码
*/
private static final String CREDENTIALS = "t-bysystem20120716";
private static LdapUtil instance = new LdapUtil();
private LdapUtil() {
}
public static LdapUtil getInstance() {
return instance;
}
/**
* 验证用户名和密码
*
* @param username 用户名
* @param password 密码
* @return 是否验证成功
* @throws Exception
*/
public boolean validateUser(String username, String password) throws Exception {
InitialDirContext initialContext = (InitialDirContext) getInitialContext();
try {
SearchControls sc = new SearchControls();
sc.setSearchScope(2);
NamingEnumeration iter = initialContext.search("dc=zhanggmsoft,dc=com", "(&(samaccountname=" + username + ")(objectclass=user))", sc);
if (iter.hasMoreElements()) {
SearchResult result = (SearchResult) iter.nextElement();
Attributes attributes = result.getAttributes();
Attribute att = attributes.get("distinguishedname");
String dn = (String) att.get();
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.PROVIDER_URL, URL);
env.put(Context.SECURITY_PRINCIPAL, dn);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.REFERRAL, "follow");
InitialDirContext initialContext1 = new InitialDirContext(env);
try {
initialContext1.search(dn, null);
} catch (Exception e) {
log.error(e);
return false;
} finally {
initialContext1.close();
}
} else {
return false;
}
return true;
} catch (Exception e) {
log.error(e);
return false;
} finally {
initialContext.close();
}
}
private InitialContext getInitialContext() throws Exception {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, URL);
env.put(Context.REFERRAL, "follow");
env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL);
env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS);
return new InitialLdapContext(env, null);
}
public static void main(String[] args) throws Exception {
String username = "querenjie";
String password = "querenjie20120809";
boolean validate = getInstance().validateUser(username, password);
System.out.println("validate = " + validate);
}
}
分享到:
相关推荐
### LDAP验证的部分代码解析 #### 一、简介 在企业级应用中,LDAP(轻量目录访问协议)常被用于用户认证与授权管理。本文将深入解析一段关于LDAP登录验证的Java代码,帮助读者理解其核心逻辑及实现细节。 #### 二...
### Java通过LDAP验证Active Directory服务 #### 一、概述 在现代企业的IT环境中,集中式身份验证和权限管理系统变得越来越重要。其中,Active Directory (AD) 和 Lightweight Directory Access Protocol (LDAP) ...
Java通过LDAP验证Active Directory服务是一种常见的身份验证方法,特别是在企业环境中,用于整合用户账户管理和安全性。以下是关于这个主题的详细说明: **LDAP (Lightweight Directory Access Protocol)** LDAP是...
Java 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习文档。LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,用于管理和访问目录服务中的...
### Django 使用 LDAP 验证的方法详解 随着企业级应用对安全性要求的不断提高,越来越多的应用选择集成现有的企业身份管理系统,如Active Directory (AD) 或其他基于 LDAP 的目录服务来进行用户认证和授权。Django ...
在IT行业中, Lightweight Directory Access Protocol (LDAP) 是一种用于存储和检索目录信息的标准协议,而Active Directory (AD) 是微软提供的目录服务,广泛应用于企业环境中进行用户身份验证和权限管理。...
JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行定制。LDAP支持TCP/IP协议,使...
这一步骤确保了LDAP验证结果的有效性。 - 在“管理”(Manage)菜单下,选择“会话”(Session),然后点击“新建”创建一个新的初始化块。 - 初始化块的作用是执行LDAP验证过程。 - 配置初始化块的数据源为上一步...
**Python和LDAP进行域认证** 在信息技术领域,域认证是一种重要的身份验证机制,它允许用户在特定的网络环境中登录并访问资源。 Lightweight Directory Access Protocol(LDAP)是实现这种认证方式的一种标准协议。...
LDAP很复杂。 很多时候,您真正需要做的就是用它对用户进行身份验证或获取用户条目。 该软件包将LDAP功能归结为用户身份验证和条目检索。
1. **配置Keystone服务**:在Keystone的配置文件keystone.conf中添加相应的验证后端配置项,确保SQL验证后端和LDAP验证后端能够协同工作。 2. **设置LDAP连接参数**:包括LDAP服务器的地址、端口、绑定DN和密码等...
LDAP验证是指使用LDAP协议来验证用户的身份,确保用户的身份信息正确无误。LDAP验证流程如下: 1. 客户端向LDAP服务器发送身份验证请求。 2. LDAP服务器验证用户的身份信息,并返回验证结果。 在Java中,我们可以...
如果存在,它将根据配置的LDAP验证凭据。 如果不是,则会将401响应发送回客户端。 经过身份验证的帐户将通过PrimaryIdentity添加到IIS安全上下文和WCF上下文中,以进行进一步处理。 用 将DLL程序集添加到WCF应用...
在Apache与SVN集成中,可以通过LDAP验证用户的登录凭证。 **集成步骤**: 1. **安装SVN服务器**:首先,通过`apt-get`安装所需组件,包括SVN、Apache及LDAP模块。 2. **创建版本库**:创建一个名为`nafsvn`的版本...
1. **模型扩展**:可能会扩展Eloquent模型以支持LDAP验证,通过自定义的`authenticatesUsingLdap`方法,当内部数据库验证失败时,调用LDAP验证。 2. **配置文件**:将包含用于连接到LDAP服务器的配置信息,如服务器...
文件传输服务可以通过LDAP验证用户身份和权限;PXE引导技术可以通过LDAP来提供用户特定的启动环境和配置信息。这些结合使用的方法往往需要额外的开发和集成工作,以确保各部分之间可以顺畅地共享和管理信息。 通过...
总的来说,`adldap2-laravel` 是 Laravel 开发者处理 LDAP 身份验证的强大工具,它简化了 LDAP 集成,使得 Laravel 应用程序能够轻松地与 Active Directory 环境交互。通过理解和利用这个包提供的各种功能,开发者...
描述中提到的"使用ldap验证身份",涉及到的主要步骤包括: 1. **建立连接**:通过Java的JNDI(Java Naming and Directory Interface)库,创建一个初始上下文对象,用以连接到LDAP服务器。 2. **搜索条目**:使用DN...
现在你可以创建一个登录路由并使用`Auth::guard('ldap')->attempt()`方法来尝试通过LDAP验证用户。在`routes/web.php`中添加以下代码: ```php Route::get('/login', function () { return view('login'); }); ...
tomcat配置ldap权限验证 Tomcat配置LDAP权限验证是指通过LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)协议来实现用户身份验证和权限控制的过程。下面是具体的配置步骤和知识点解释: 1....