Java到LDAP教程(包括如何安装LDAP服务器/客户端)

本教程将向您展示如何编写Java代码以与LDAP交互。 但是在执行此操作之前,我们需要在计算机上设置LDAP服务器和客户端。

如果此时您不确定到底是什么LDAP,建议您参考这篇文章,其中提供了一个很好的定义示例。 (简而言之,有助于将LDAP服务器视为专门的数据库)。

安装LDAP服务器

我在MBP上运行。 环顾了一会后,我发现最容易安装的LDAP服务器是ApacheDirectory,您可以从此处下载。 (安装和启动服务器应少于5分钟)

安装完成后,它将自动启动守护程序。 然后,您可以使用此命令运行服务器。

sudo launchctl start org.apache.directory.server

有关更多安装说明,请参见此处 。

LDAP客户端

您将要查看LDAP服务器的内容。 最容易安装的LDAP客户端是Apache Directory Studio,可以从此处下载。

下载完成后,您需要创建与服务器的连接- 此处包含有关说明。

连接后,Apache Directory Studio应该如下所示:

屏幕截图2015年9月24日在17.20.17

现在可以从Java程序访问LDAP。 向您展示如何执行此操作的最佳方法是通过示例程序。 该程序将执行以下任务:

  • 创建一个新的LDAP对象
  • 查看LDAP对象
  • 将新属性添加到LDAP对象
  • 修改LDAP对象上的属性
  • 删除LDAP对象上的属性
  • 删除LDAP对象

注意:此类在其自身之后进行清除,即它将LDAP Server保留在其被发现的状态。 如果要查看正在执行的各种任务,只需运行其中一项任务,然后通过LDAP客户端查看LDAP对象。 不要忘记,您可以在LDAP客户端中修改对象并进行测试。

package test;import java.util.Properties;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.*;public class LDAPTest {public void run() {try {DirContext context = getContext();String name = "employeeNumber=00001,ou=system";createLDAPObject(context, name);createAttribute(context, name, "displayName", "JOBS");viewAttribute(context, name, "displayName");updateAttribute(context, name, "displayName", "STEVE");viewAttribute(context, name, "displayName");removeAttribute(context, name, "displayName");removeLDAPObject(context, name);} catch (NamingException e) {e.printStackTrace();}}private void removeLDAPObject(DirContext context, String name) throws NamingException {context.destroySubcontext(name);}private void createLDAPObject(DirContext context, String name) throws NamingException {Attributes attributes = new BasicAttributes();Attribute attribute = new BasicAttribute("objectClass");attribute.add("inetOrgPerson");attributes.put(attribute);Attribute sn = new BasicAttribute("sn");sn.add("Steve");attributes.put(sn);Attribute cn = new BasicAttribute("cn");cn.add("Jobs");attributes.put(cn);attributes.put("telephoneNumber", "123456");context.createSubcontext(name, attributes);}private void removeAttribute(DirContext context, String name , String attrName) throws NamingException {Attribute attribute = new BasicAttribute(attrName);ModificationItem[] item = new ModificationItem[1];item[0] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, attribute);context.modifyAttributes(name, item);}private void createAttribute(DirContext context, String name , String attrName, Object attrValue) throws NamingException {Attribute attribute = new BasicAttribute(attrName, attrValue);ModificationItem[] item = new ModificationItem[1];item[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, attribute);context.modifyAttributes(name, item);}private void updateAttribute(DirContext context, String name , String attrName, Object attrValue) throws NamingException {Attribute attribute = new BasicAttribute(attrName, attrValue);ModificationItem[] item = new ModificationItem[1];item[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attribute);context.modifyAttributes(name, item);}private void viewAttribute(DirContext context, String name , String attrName) throws NamingException {Attributes attrs = context.getAttributes(name);System.out.println(attrName + ":" + attrs.get(attrName).get());}private DirContext getContext() throws NamingException {Properties properties = new Properties();properties.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");properties.put(Context.PROVIDER_URL, "ldap://localhost:10389");return new InitialDirContext(properties);}public static void main(String[] args) {new LDAPTest().run();}
}

该代码在下面,应该可以自我解释。

翻译自: https://www.javacodegeeks.com/2015/09/java-to-ldap-tutorial-including-how-to-install-an-ldap-server-client.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 嗅探密码,Linux下嗅探又一实例截取

在SecureCRT下利用rz命令上传我们用到的arpsniffer.c,然后编译:[rootbbs111 root]# gcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet报错,可能是没装libnet的缘故,看说明Make: first you mus…

清北学堂十一培训酱油记

【day0】 要坐大巴去北京……(没错是大巴!)然而说好的六点走,生生等到了七点……不过一路上还是很happy的!某导游兔子 然而到华电之后,身子都散架了……这次的酒店在北农,感觉还可以&#xff0c…

在linux下赋予000权限,【linux】对于文件权限的理解

本篇博文旨在介绍linux下的权限问题;介绍了Linux下,查看权限、修改权限等方法;并通过分别在超级用户(root)和普通用户下进行测试,探索不同等级的用户进入目录需要的权限,以及进入后,显示和创建文件需要的权…

手把手教你制作简易计算器

实现过程&#xff1a; HTMLCssJS 具体通过标签实现计算器整个的框架 通过Css样式实现计算器页面布局及框架优化 通过JavaScript算法实现计算器计算过程 次实验过程&#xff1a; 背景图片背景音乐&#xff08;看个人意愿加&#xff01;&#xff09; 安排&#xff1a; <!--HT…

【dp】导弹拦截

拦截导弹 (missile.pas/c/cpp) 来源&#xff1a;NOIP1999(提高组) 第一题 【问题描述】 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不…

安装tron_具有Tron效果的JavaFX 2 Form

安装tron这是一个具有TRON效果的简单JavaFX登录表单。 在此示例中&#xff0c;我使用CSS设置TextField和Button的样式。 这是CSS和Effect代码的片段&#xff1a; .text-field{-fx-background-color: transparent;-fx-border-color: #00CCFF;-fx-text-fill: white; }.password-f…

linux版本photoshop,在linux上使用ps(转载)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼用Photoshop的&#xff0c;虽说GIMP也是不错&#xff0c;但是用起来总有点不顺的感觉&#xff0c;决定搞一个运行在Linux下的Photoshop&#xff0c;找了好多资料都没有虚拟CS的&#xff0c;不过倒是了解了不少虚拟Photoshop 这方面…

优美三角剖分_递归

问题 D: 优美三角剖分 时间限制: 1 Sec 内存限制: 64 MB提交: 13 解决: 4[提交][状态][讨论版]题目描述 小X同学为了搞好和小C同学的关系&#xff0c;特意寻找了一些优美的图像作为礼物。这是一些由无穷无尽三角形组成的极为优美的图形&#xff0c;小X同学很想实现这些极富美…

在Spring 4.2中更简单地处理异步事务绑定事件

介绍 如您可能已经知道的&#xff08;例如&#xff0c;从我以前的博客文章中 &#xff09;&#xff0c;不再需要创建一个单独的类&#xff0c;该类使用onApplicationEvent方法实现ApplicationListener以便能够对应用程序事件做出响应&#xff08;包括来自Spring Framework本身和…

linux chattr 无权限,从零开始学习Linux(二十八):文件权限之chattr权限

1、chattr命令命令格式&#xff1a; chattr [-] [选项] 文件名或者目录名&#xff1b;参数说明&#xff1a;&#xff1a;增加权限&#xff1b;-&#xff1a;删除权限&#xff1b; 等于某权限&#xff1b;选项说明&#xff1a;i&#xff1a;如果对文件设置i属性&#xff0c;则不…

初等数论及其应用——中国剩余定理

在线性代数中&#xff0c;我们用高斯消元解决多元的线性方程组&#xff0c;而在数论中&#xff0c;面对一元变量的线性模方程组&#xff0c;我们利用中国剩余定理去求解x。 转载于:https://www.cnblogs.com/rhythmic/p/5928483.html

linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译

系统环境&#xff1a;Ubuntu 14.04.3 -amd64 in VMWare1.安装openjdk7依赖sudo apt-get build-dep openjdk-7sudo apt-get install openjdk-7-jdksudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-prin…

jQuery选择器的效率问题

jQuery提供了功能强大&#xff0c;并兼容多种css版本的选择器&#xff0c;不过发现很多同学在使用选择器时并未注重效率的问题。 a) 尽量使用Id选择器&#xff0c;jQuery选择器使用的API都是基于getElementById或getElementsByTagName&#xff0c;因此可以知道效率最高的是Id选…

HTTP请求和标头参数的CDI拦截器-简单示例

在使用Java EE开发和发展REST API的过程中&#xff0c;有些情况下您希望以更细粒度的方式&#xff08;视情况而定&#xff09;对传入的HTTP请求&#xff08;特别是标头参数&#xff09;进行“观察” Servlet过滤器或更具体的ContainerRequestFilters 。 我发现在某些情况下非常…

csgo服务器搭建 linux,请问搭建csgo服务器切换创意工坊地图报错怎么办

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Unknown command "sv_maxcmdrate"Unknown command "cash_team_elimination_hostage_map"Unknown command "cash_team_win_by_time_running_out"Unknown command "sv_vote_creation_time"W…

1405 树的距离之和

1405 树的距离之和 基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB给定一棵无根树&#xff0c;假设它有n个节点&#xff0c;节点编号从1到n, 求任意两点之间的距离&#xff08;最短路径&#xff09;之和。Input第一行包含一个正整数n (n < 100000)&#xff0c…

linux c 11 运行库,11.1.3 运行库与I/O

11.1.3 运行库与I/O在了解了glibc和MSVC的入口函数的基本思路之后&#xff0c;让我们来深入了解各个初始化部分的具体实现。但在具体了解初始化之前&#xff0c;我们要先了解一个重要的概念&#xff1a;I/O。IO(或I/O)的全称是Input/Output&#xff0c;即输入和输出。对于计算…

设置Elasticsearch N-Gram Word分析器的过程

说n-gram是一个大话题&#xff0c;这是轻描淡写的。 进行快速搜索&#xff0c;您会发现自己盯着语言学和语言模型&#xff0c;数据挖掘或特定蛋白质的分解对首次亮相文化的衰落所隐含的信息量。 好吧&#xff0c;我在跟那最后一个开玩笑。 但是&#xff0c;如果您是开发人员&a…

linux windows 丢失,Win10预览版9879硬盘丢失的Linux解决方案

IT之家讯 12月3日消息&#xff0c;最近IT之家论坛网友九仙仙总结了Win10预览版9879硬盘问题的解决方法&#xff0c;并在论坛中发布出来。经测试&#xff0c;此为快速有效的解决方法&#xff0c;故公之于众供朋友们参考。以下为作者原文。开头说明两点&#xff1a;1、这是我个人…

linux单网卡多拨Adsl,ROS单线多拨pppoe

#设置内网IP地址/ ip add add interfaceether1address192.168.0.254/255.255.255.0#设置共享上网/ ip firewall nat add actionmasquerade chainsrcnatsrc-address192.168.0.0/255.255.255.0#设置ADSL拔号/ interface pppoe-client add name"pppoe-out1" interfaceet…