在企业级应用中,LDAP常用来进行用户的统一管理和验证。用户登录应用系统时,输入用户名和密码, 应用系统到LDAP服务器验证该用户名密码是否有效。
Java本身提供了JNDI相关的API可以连接和查询LDAP。主要步骤包括:

  1. 设置初始LDAP上下文的属性,并初始化LDAP上下文
  2. 设置查询的属性
  3. 通过上下文查询记录
  4. 获取查询的内容
  5. 关闭 上下文,释放连接
    示例代码如下:
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实现验证与查询用户相关推荐

  1. java连接ldap验证,验证用户使用LDAP登录

    我无法使用LDAP成功验证ASP.NET Web应用程序的用户 . 我已经在我们自己的网络上针对Active Directory这样做了,但这是针对我们网络之外的服务器,即OID(Oracle Int ...

  2. java连接ldap服务器_java – LDAP:如何使用连接详细信息验证用...

    我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...

  3. C# -- Novell.Directory.Ldap连接LDAP作简单筛选查询,并处理objectGUID的乱码问题

    文章目录 什么是LDAP LDAP的特点 C#链接LDAP 代码 Linux 安装.NetCore环境 .NetCore WebApi 部署 什么是LDAP LDAP是轻量目录访问协议(Lightwe ...

  4. java连接ldap服务器_客户端无法连接到ldap服务器

    我是使用ldap和slapd的新手,我在使用我的客户端机器连接到托管slapd的服务器时遇到了一些麻烦 . 这是向下运行:在ubuntu盒子上我有一个运行带有CentOS的虚拟机的虚拟机实例 . 我已 ...

  5. java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份

    我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...

  6. 用java进行LDAP用户登陆(用户认证)及修改密码

    为什么80%的码农都做不了架构师?>>>    一.用户认证 public String execute(){Hashtable env = new Hashtable();Stri ...

  7. Python通过LDAP验证、查找用户(class,logging)

    定义一个类,用于初始化ldap连接,验证.查找用户等功能 # -*- coding: UTF-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...

  8. java 远程登陆windows_使用Windows身份验证,JAVA连接到远程MSSQL

    我需要连接到远程ms sql.I有连接的Windows服务器登录信息 . 并且该登录用户可以连接到MSSQL服务器 . (我的意思是我可以通过Windows身份验证与该用户连接到MSSQL服务器) 我 ...

  9. Bootstrap4+MySQL前后端综合实训-Day06-PM【MD5加码-生成32位md5码、ResultData.java、分页查询用户数据、添加用户按钮的实现】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目录 MD5加码 生成32位md5码 ResultData.java 分页查询 ...

最新文章

  1. Java学习之for语句
  2. Dubbo和SpringCloud的区别
  3. 为什么下拉框拉不下来_零线不带电,为什么还要拉一条?直接用地做零线不是更省钱?...
  4. Android中利用ant进行多渠道循环批量打包(一)
  5. OpenCV实现简单人脸检测
  6. http抓包实战 pdf_实战 Wireshark https 抓包 2, 再抓 Moka 蹭 OurATS 的小尾巴
  7. linux定时任务每两天执行,Linux定时任务 crontab每秒执行 实现2种方法
  8. 基础学习笔记之opencv(14):随机数发生器绘制文字
  9. python random函数_python随机模块random的22种函数(小结)
  10. Java NIO类库Selector机制解析(上)
  11. ecshop 模板页php,ECSHOP 模板结构说明
  12. 百度地图获取行政区划边界
  13. 抖音上的战斗力测试软件,战斗力测试app
  14. 数据库(MySQL)基础
  15. 电源设计中的电容应用实例
  16. 国家计算机一级考试题库百度云,全国计算机一级考试题库
  17. Color类颜色对照表
  18. java中多态的作用,多态的好处,以及为什么要用多态?
  19. PYTHON菜鸟指导
  20. ASUS(华硕) 天选air系统 2022 FX517ZC FX517ZE FX517ZM FX517ZR原厂Windows11系统 工厂系统安装 带一键恢复 华硕原厂系统ROG系统下载华硕OEM系统

热门文章

  1. selenium python 启动Chrome
  2. JS函数生成器,function* () {}
  3. solr的多条件组合查询和solr的范围查询【转】
  4. TCL_事务控制语言
  5. 判断手机号邮箱号和车牌号是否合法的方法
  6. 源文件与模块文件生成时的文件不同,仍要调试器使用它吗
  7. [翻译] TGLStackedViewController
  8. 实验2-3-3 信号处理总结以及Linux下支持的信号列表
  9. 取英文名字的几个规则
  10. win10安装ubuntu系统出现的一些问题以及解决方案