Java 连接LDAP实现验证与查询用户
在企业级应用中,LDAP常用来进行用户的统一管理和验证。用户登录应用系统时,输入用户名和密码, 应用系统到LDAP服务器验证该用户名密码是否有效。
Java本身提供了JNDI相关的API可以连接和查询LDAP。主要步骤包括:
- 设置初始LDAP上下文的属性,并初始化LDAP上下文
- 设置查询的属性
- 通过上下文查询记录
- 获取查询的内容
- 关闭 上下文,释放连接
示例代码如下:
String principal = "Manager";String password = "secret";String ldapUrl = "ldap://XXX:389";LdapContext ctx = null;String searchBase = "dc=maxcrc,dc=com";String searchDn = "cn=Manager,dc=maxcrc,dc=com";//1. 设置初始LDAP上下文的属性,并初始化LDAP上下文Hashtable<String, String> env = new Hashtable<String, String>();env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// Factory用于创建InitialContext对象env.put(Context.SECURITY_AUTHENTICATION, "Simple");//env.put(Context.SECURITY_PRINCIPAL, principal);env.put(Context.SECURITY_CREDENTIALS, password);env.put(Context.SECURITY_PRINCIPAL, searchDn);env.put(Context.PROVIDER_URL, ldapUrl);try {ctx = new InitialLdapContext(env, null);//2. 设置查询的属性SearchControls constraints = new SearchControls();constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);constraints.setReturningAttributes(new String[] { "xxx" });//3. 通过上下文查询记录NamingEnumeration<SearchResult> results = ctx.search(searchBase, "uid=Oscar", constraints);//4. 获取查询的内容while (results.hasMore()) {NameClassPair nc = (NameClassPair) results.next();System.out.println(nc);}} catch (Exception e) {e.printStackTrace();}//5. 关闭 上下文,释放连接finally {if (ctx != null) {try {ctx.close();// 4.0 close Connection// LOG.info("Close Ldap Successful.");} catch (NamingException e) {// LOG.error("Exception in ldapClose(): ", e);}}}
Java 连接LDAP实现验证与查询用户相关推荐
- java连接ldap验证,验证用户使用LDAP登录
我无法使用LDAP成功验证ASP.NET Web应用程序的用户 . 我已经在我们自己的网络上针对Active Directory这样做了,但这是针对我们网络之外的服务器,即OID(Oracle Int ...
- java连接ldap服务器_java – LDAP:如何使用连接详细信息验证用...
我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...
- C# -- Novell.Directory.Ldap连接LDAP作简单筛选查询,并处理objectGUID的乱码问题
文章目录 什么是LDAP LDAP的特点 C#链接LDAP 代码 Linux 安装.NetCore环境 .NetCore WebApi 部署 什么是LDAP LDAP是轻量目录访问协议(Lightwe ...
- java连接ldap服务器_客户端无法连接到ldap服务器
我是使用ldap和slapd的新手,我在使用我的客户端机器连接到托管slapd的服务器时遇到了一些麻烦 . 这是向下运行:在ubuntu盒子上我有一个运行带有CentOS的虚拟机的虚拟机实例 . 我已 ...
- java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份
我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...
- 用java进行LDAP用户登陆(用户认证)及修改密码
为什么80%的码农都做不了架构师?>>> 一.用户认证 public String execute(){Hashtable env = new Hashtable();Stri ...
- Python通过LDAP验证、查找用户(class,logging)
定义一个类,用于初始化ldap连接,验证.查找用户等功能 # -*- coding: UTF-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...
- java 远程登陆windows_使用Windows身份验证,JAVA连接到远程MSSQL
我需要连接到远程ms sql.I有连接的Windows服务器登录信息 . 并且该登录用户可以连接到MSSQL服务器 . (我的意思是我可以通过Windows身份验证与该用户连接到MSSQL服务器) 我 ...
- Bootstrap4+MySQL前后端综合实训-Day06-PM【MD5加码-生成32位md5码、ResultData.java、分页查询用户数据、添加用户按钮的实现】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目录 MD5加码 生成32位md5码 ResultData.java 分页查询 ...
最新文章
- Java学习之for语句
- Dubbo和SpringCloud的区别
- 为什么下拉框拉不下来_零线不带电,为什么还要拉一条?直接用地做零线不是更省钱?...
- Android中利用ant进行多渠道循环批量打包(一)
- OpenCV实现简单人脸检测
- http抓包实战 pdf_实战 Wireshark https 抓包 2, 再抓 Moka 蹭 OurATS 的小尾巴
- linux定时任务每两天执行,Linux定时任务 crontab每秒执行 实现2种方法
- 基础学习笔记之opencv(14):随机数发生器绘制文字
- python random函数_python随机模块random的22种函数(小结)
- Java NIO类库Selector机制解析(上)
- ecshop 模板页php,ECSHOP 模板结构说明
- 百度地图获取行政区划边界
- 抖音上的战斗力测试软件,战斗力测试app
- 数据库(MySQL)基础
- 电源设计中的电容应用实例
- 国家计算机一级考试题库百度云,全国计算机一级考试题库
- Color类颜色对照表
- java中多态的作用,多态的好处,以及为什么要用多态?
- PYTHON菜鸟指导
- ASUS(华硕) 天选air系统 2022 FX517ZC FX517ZE FX517ZM FX517ZR原厂Windows11系统 工厂系统安装 带一键恢复 华硕原厂系统ROG系统下载华硕OEM系统