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);
}
}
分享到:
相关推荐
java通过LDAP验证Active Directory服务。获得用户信息。
java通过LDAP验证ActiveDirectory服务.pdf
java连接和验证的ldap学习文档,密码的校验,通过jndi连接ldap服务
此段为LDAP登陆的验证代码,未知其实用性如何,仅供参考
LDAP实现AD域账号验证
主要介绍了django使用LDAP验证的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
LDAP很复杂。 很多时候,您真正需要做的就是用它对用户进行身份验证或获取用户条目。 该软件包将LDAP功能归结为用户身份验证和条目检索。
Python和LDAP域认证,python-LDAP软件,以及python-LDAP资料,还包含有在python中的cookie处理。
BIEE 通过 LDAP权限验证 1 LDAP配置 2 BIEE连接LDAP配置 3 BIP通过LDAP验证用户
如果存在,它将根据配置的LDAP验证凭据。 如果不是,则会将401响应发送回客户端。 经过身份验证的帐户将通过PrimaryIdentity添加到IIS安全上下文和WCF上下文中,以进行进一步处理。 用 将DLL程序集添加到WCF应用...
使用开源软件Freeradius及LDAP进行身份认证的说明文档
LDAP客户端浏览,能够查看LDAP服务器的用户组与用户信息等.
用于LDAP身份验证驱动程序 安装 通过Composer添加 添加到composer.json并使用composer install { require: { "aparticka/laravel-auth-ldap": "dev-master" } } 或使用composer require aparticka/laravel-...
go-ldap-client 简单的ldap客户端进行身份验证,检索用户的基本信息和组。用法参见。 唯一的外部依赖项是 。 package mainimport ("log""github.com/jtblin/go-ldap-client")func main () {client := & ldap. LDAP...
spring security 3 ldap验证方式示例
使用ldap验证身份,包括联结ldap,处理exception等信息
用JNDI验证LDAP域中是否有对应的用户与密码。相当与域登陆
LDAP角色 该角色将加入Debian或RedHat计算机以绑定到LDAP目录。 配置步骤 该角色将配置以下程序,以使您的系统为LDAP认证做准备: Oddjob(仅适用于RHEL) OpenLDAP(仅支持纯LDAP或STARTTLS) 聚甲醛 固态硬盘 ...
不错的JAVA操作LDAP实例,有源码.LDAP 验证、新增、修改、查询用户
django-python3-ldap, python 3的Django LDAP用户身份验证后端 django-python3-ldapdjango-python3-ldap 为 python 2和 3提供了一个 Django LDAP用户身份验证后端。特性使用LDAP服务器验证用户身份。将LDAP用户与...