`
samjavaeye
  • 浏览: 193908 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

LDAP身份验证示例

    博客分类:
  • Java
阅读更多

 

public class LDAPAuthentication {
	private final String URL = "ldap://ldapserver:389/";
	private final String BASEDN = "ou=people,o=xxx.com.cn";
	private final String FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
	private LdapContext ctx = null;
	private final Control[] connCtls = null;

	private void LDAP_connect() {
		Hashtable<String, String> env = new Hashtable<String, String>();
		env.put(Context.INITIAL_CONTEXT_FACTORY, FACTORY);
		env.put(Context.PROVIDER_URL, URL + BASEDN);
		env.put(Context.SECURITY_AUTHENTICATION, "simple");
		// 此处若不指定用户名和密码,则自动转换为匿名登录
		try {
			ctx = new InitialLdapContext(env, connCtls);
		} catch (javax.naming.AuthenticationException e) {
			System.out.println("验证失败:" + e.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private String getUserDN(String uid) {
		String userDN = "";
		LDAP_connect();

		try {
			SearchControls constraints = new SearchControls();
			constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
			NamingEnumeration<SearchResult> en = ctx.search("", "uid=" + uid, constraints);
			if (en == null || !en.hasMoreElements()) {
				System.out.println("未找到该用户");
			}
			// maybe more than one element
			while (en != null && en.hasMoreElements()) {
				Object obj = en.nextElement();
				if (obj instanceof SearchResult) {
					SearchResult si = (SearchResult) obj;
					userDN += si.getName();
					userDN += "," + BASEDN;
				} else {
					System.out.println(obj);
				}
			}
		} catch (Exception e) {
			System.out.println("查找用户时产生异常。");
			e.printStackTrace();
		}

		return userDN;
	}

	public boolean authenricate(String UID, String password) {
		boolean valide = false;
		String userDN = getUserDN(UID);

		try {
			ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, userDN);
			ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);
			ctx.reconnect(connCtls);
			System.out.println(userDN + " 验证通过");
			valide = true;
		} catch (AuthenticationException e) {
			System.out.println(userDN + " 验证失败");
			System.out.println(e.toString());
			valide = false;
		} catch (NamingException e) {
			System.out.println(userDN + " 验证失败");
			valide = false;
		}

		return valide;
	}

	public static void main(String[] args) {
		String uid = "username", password = "password";
		LDAPAuthentication _this = new LDAPAuthentication();
		_this.authenricate(uid, password);
	}
}
分享到:
评论

相关推荐

    nginx-ldap-auth:使用ngx_http_auth_request_module的LDAP身份验证示例

    它包括一个与身份验证服务器进行通信的守护程序( ldap-auth ),以及一个示例守护程序,该示例守护程序在测试期间通过基于用户凭据生成身份验证cookie来代表实际的后端服务器。 这些守护程序是用Python编写的,可...

    nginx-auth-ldap:用于 nginx 的 LDAP 身份验证模块

    用于 nginx 的 LDAP 身份验证模块nginx的LDAP模块,支持针对多个LDAP服务器的身份验证。如何安装FreeBSD cd /usr/ports/www/nginx && make config install clean 检查 HTTP_AUTH_LDAP 选项 [*] HTTP_AUTH_LDAP 3rd ...

    ldap使用示例spring mvc

    本篇文章将深入探讨如何在Spring MVC项目中集成并使用LDAP进行用户身份验证和管理。 首先,理解LDAP的基本概念至关重要。LDAP目录服务是一种基于树形结构的数据存储,其中每个条目都有唯一的标识符(DN,...

    JAVA中使用LDAP进行用户认证

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

    django使用LDAP验证的方法示例

    本文档详细介绍了如何在 Django 项目中集成 LDAP 身份验证,并提供了实际的配置示例和步骤指南。 #### 一、安装所需依赖 为了在 Django 应用中实现 LDAP 身份验证,首先需要安装两个必要的 Python 库: 1. **...

    flask-simpleldap:Flask Web框架的LDAP身份验证扩展

    Flask-SimpleLDAP为Flask提供LDAP身份验证。 Flask-SimpleLDAP与Python 3.5、3.6和3.7兼容并经过测试。 快速开始 首先,安装Flask-SimpleLDAP: $ pip install flask-simpleldap Flask-SimpleLDAP依赖于Flask的...

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

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

    vault-ldap-auth:将HashiCorp Vault配置为使用LDAP进行身份验证的示例

    保管库-ldap-auth 将HashiCorp Vault配置为使用LDAP进行身份验证的示例入门部署infrastructure/cloudformation.json模板。 该模板使用以下凭据和最少的权限创建用户,以完成实验室: 用户名: student 密码:密码...

    ldap示例程序

    **LDAP(轻量级目录访问协议)**是一种用于存储和检索目录信息的网络协议,广泛应用于用户身份验证、权限管理以及组织数据的集中存储。在IT领域,掌握LDAP的使用对于构建高效、安全的网络环境至关重要。在这个"ldap...

    nginx-ldap:Dockerfile 用于构建具有基本 LDAP 身份验证、SSL 和代理支持的 NGINX Web 服务器。 非常适合 Docker 注册表身份验证

    这可以用作私有的反向代理,该根据 LDAP 或 Active Directory 用户目录对用户进行身份验证。 可以在找到包括配置示例文件在内的源代码。 docker 镜像可以从下载。 用法 无需认证的静态页面 以下容器将提供 NGINX ...

    LDAP类库,方便操作LDAP的类库

    - 连接到 LDAP 服务器并进行身份验证的示例。 - 使用过滤器搜索目录的示例。 - 添加、删除和更新条目的示例。 - 错误处理和异常捕获的示例。 通过学习和理解这些示例,开发者可以快速上手并根据自己的需求定制LDAP...

    LDAP统一安全身份管理系统_应用开发培训

    在IT环境中,LDAP通常用于存储和管理用户账户、权限、组信息等,是企业实现身份验证、授权和信息共享的重要工具。它的主要特点是高效、简洁,支持多种操作系统和网络环境。 **二、LDAP目录结构** LDAP目录结构基于...

    Web认证使用LDAP无线局域网控制器(WLCs)配置示例.pdf

    Web 认证使用 LDAP 无线局域网控制器(WLCs)配置示例 本文档介绍了如何设置 Web 认证的无线局域网控制器(WLC),使用轻型目录访问协议(LDAP)作为后端数据库服务器,以检索用户凭据,验证用户身份。本文档还介绍...

    ldap.rar_c++ ldap_域用户验证

    要使用C++进行LDAP身份验证,你需要了解以下几个关键步骤: 1. **连接到LDAP服务器**:首先,你需要创建一个连接到LDAP服务器的句柄。这通常涉及指定服务器的地址、端口以及认证信息(如用户名和密码)。在C++中,...

    Laravel开发-ldap

    当我们谈论"Laravel开发-ldap"时,这意味着我们要探讨如何在Laravel项目中集成和使用LDAP(轻量级目录访问协议)进行身份验证和其他相关操作。 LDAP是一种用于存储和检索用户信息的标准协议,常用于大型组织或企业...

    matrix-synapse-ldap3:用于Synapse的LDAP3身份验证提供程序

    Synapse LDAP身份验证提供程序 允许突触使用LDAP作为密码提供程序。 这允许用户从LDAP服务器登录以使用其用户名和密码进行突触。 还有ma1sd( )(第三方),它提供了功能更强大的集成。 安装 包含在matrix.org的...

    Python 和 LDAP进行域认证

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

    LDAP开发SampleCode

    - **LDAP**主要应用于用户身份验证、权限管理和信息查询等场景,在企业级应用中非常常见。 #### 二、LDAP连接流程分析 在给定的SampleCode中,展示了如何通过一系列步骤实现与LDAP服务器的连接,并完成用户的身份...

    Reporting Service 2016 扩展自定义身份验证类包

    自定义身份验证在某些场景下非常有用,比如当系统需要与已有的认证系统(如LDAP、OAuth或企业内部的认证服务)集成时。通过自定义身份验证,我们可以灵活地控制用户的登录过程,确保符合组织的安全策略。 这个...

    JAAS 身份验证技术入门

    ### JAAS身份验证技术入门详解 #### 一、JAAS概览 JAAS,全称为Java Authentication and Authorization Service(Java认证与授权服务),是Java Standard Edition(Java SE)中的一个核心组成部分,旨在为Java应用...

Global site tag (gtag.js) - Google Analytics