`
guomingzhang2008
  • 浏览: 161258 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ldap验证

阅读更多
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(轻量目录访问协议)常被用于用户认证与授权管理。本文将深入解析一段关于LDAP登录验证的Java代码,帮助读者理解其核心逻辑及实现细节。 #### 二...

    java通过LDAP验证Active Directory服务

    ### Java通过LDAP验证Active Directory服务 #### 一、概述 在现代企业的IT环境中,集中式身份验证和权限管理系统变得越来越重要。其中,Active Directory (AD) 和 Lightweight Directory Access Protocol (LDAP) ...

    java通过LDAP验证ActiveDirectory服务.pdf

    Java通过LDAP验证Active Directory服务是一种常见的身份验证方法,特别是在企业环境中,用于整合用户账户管理和安全性。以下是关于这个主题的详细说明: **LDAP (Lightweight Directory Access Protocol)** LDAP是...

    java连接和验证ldap文档

    Java 连接和验证 LDAP 文档 Java 连接和验证 LDAP 文档是一份关于 Java 语言连接和验证 LDAP 服务器的学习文档。LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,用于管理和访问目录服务中的...

    django使用LDAP验证的方法示例

    ### Django 使用 LDAP 验证的方法详解 随着企业级应用对安全性要求的不断提高,越来越多的应用选择集成现有的企业身份管理系统,如Active Directory (AD) 或其他基于 LDAP 的目录服务来进行用户认证和授权。Django ...

    LDAP实现AD域账号验证 - Java/SpringBoot

    在IT行业中, Lightweight Directory Access Protocol (LDAP) 是一种用于存储和检索目录信息的标准协议,而Active Directory (AD) 是微软提供的目录服务,广泛应用于企业环境中进行用户身份验证和权限管理。...

    JAVA中使用LDAP进行用户认证

    JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行定制。LDAP支持TCP/IP协议,使...

    BIEE通过LDAP权限验证

    这一步骤确保了LDAP验证结果的有效性。 - 在“管理”(Manage)菜单下,选择“会话”(Session),然后点击“新建”创建一个新的初始化块。 - 初始化块的作用是执行LDAP验证过程。 - 配置初始化块的数据源为上一步...

    Python 和 LDAP进行域认证

    **Python和LDAP进行域认证** 在信息技术领域,域认证是一种重要的身份验证机制,它允许用户在特定的网络环境中登录并访问资源。 Lightweight Directory Access Protocol(LDAP)是实现这种认证方式的一种标准协议。...

    Go-Go的基本LDAP身份验证器

    LDAP很复杂。 很多时候,您真正需要做的就是用它对用户进行身份验证或获取用户条目。 该软件包将LDAP功能归结为用户身份验证和条目检索。

    openstack对接只读LDAP

    1. **配置Keystone服务**:在Keystone的配置文件keystone.conf中添加相应的验证后端配置项,确保SQL验证后端和LDAP验证后端能够协同工作。 2. **设置LDAP连接参数**:包括LDAP服务器的地址、端口、绑定DN和密码等...

    LDAP增、删、改、查操作

    LDAP验证是指使用LDAP协议来验证用户的身份,确保用户的身份信息正确无误。LDAP验证流程如下: 1. 客户端向LDAP服务器发送身份验证请求。 2. LDAP服务器验证用户的身份信息,并返回验证结果。 在Java中,我们可以...

    SealSignDSSLDAPModule:在Web应用程序中注册后,HTTP模块将捕获所有请求并检查身份验证标头中的基本凭据。 如果存在,它将根据配置的LDAP验证凭据。 如果不是,则会将401响应发送回客户端。 经过身份验证的帐户将通过PrimaryIdentity添加到IIS安全上下文和WCF上下文中,以进行进一步处理

    如果存在,它将根据配置的LDAP验证凭据。 如果不是,则会将401响应发送回客户端。 经过身份验证的帐户将通过PrimaryIdentity添加到IIS安全上下文和WCF上下文中,以进行进一步处理。 用 将DLL程序集添加到WCF应用...

    Ubuntu+svn+ssl+ldap

    在Apache与SVN集成中,可以通过LDAP验证用户的登录凭证。 **集成步骤**: 1. **安装SVN服务器**:首先,通过`apt-get`安装所需组件,包括SVN、Apache及LDAP模块。 2. **创建版本库**:创建一个名为`nafsvn`的版本...

    Laravel开发-my-eloquent-ldap

    1. **模型扩展**:可能会扩展Eloquent模型以支持LDAP验证,通过自定义的`authenticatesUsingLdap`方法,当内部数据库验证失败时,调用LDAP验证。 2. **配置文件**:将包含用于连接到LDAP服务器的配置信息,如服务器...

    ldap教程,openLDAP实战指南

    文件传输服务可以通过LDAP验证用户身份和权限;PXE引导技术可以通过LDAP来提供用户特定的启动环境和配置信息。这些结合使用的方法往往需要额外的开发和集成工作,以确保各部分之间可以顺畅地共享和管理信息。 通过...

    Laravel开发-adldap2-laravel

    总的来说,`adldap2-laravel` 是 Laravel 开发者处理 LDAP 身份验证的强大工具,它简化了 LDAP 集成,使得 Laravel 应用程序能够轻松地与 Active Directory 环境交互。通过理解和利用这个包提供的各种功能,开发者...

    登陆模块,与ldap连接获取信息

    描述中提到的"使用ldap验证身份",涉及到的主要步骤包括: 1. **建立连接**:通过Java的JNDI(Java Naming and Directory Interface)库,创建一个初始上下文对象,用以连接到LDAP服务器。 2. **搜索条目**:使用DN...

    Laravel开发-laravel-ldap-auth

    现在你可以创建一个登录路由并使用`Auth::guard('ldap')-&gt;attempt()`方法来尝试通过LDAP验证用户。在`routes/web.php`中添加以下代码: ```php Route::get('/login', function () { return view('login'); }); ...

    tomcat配置ldap权限验证

    tomcat配置ldap权限验证 Tomcat配置LDAP权限验证是指通过LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)协议来实现用户身份验证和权限控制的过程。下面是具体的配置步骤和知识点解释: 1....

Global site tag (gtag.js) - Google Analytics