博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈ldap以及jndi
阅读量:5234 次
发布时间:2019-06-14

本文共 1814 字,大约阅读时间需要 6 分钟。

现在很多企业中都会用到LDAP,一个常见的例子,假如一个大型企业,有很多linux服务器,企业员工可以登录到这些linux服务器中做开发以及测试,但员工是否需要每台linux服务器都需要一个帐号,还是所有linux服务器公用一个帐号呢?  还有一种情况,假如企业内容有很多用户管理系统,比如绩效系统,请假系统,办公系统等等,那么员工在使用这些系统时是否可以共用一个统一的帐号呢?  这两种情况的答案是肯定的,就是使用一个帐号能够将所有这些都搞定! 

专业一点说,这两种情况都叫做"统一用户认证"。 如何来实现它呢,目前比较流行的就是使用ldap.

说到Ldap,有几个容易混淆的概念

  • ldap协议,跟http/ftp一样,属于应用层协议,基于tcp/ip的,通过这个协议就能很方便地跟ldap服务器通信。
  • ldap服务器,ldap服务器可以是一台专门的机器,从本质上讲,它必须包含两个东西:一个是处理ldap协议的程序,大概要解析ldap协议,提取ldap消息内容(是查询/修改还是其他...)。 另一个就是集中的资源,比如员工的账户信息。
  • ldap客户端,就是需要统一认证的地方,比如用户管理登录时的逻辑。

 

这里不打算探讨ldap协议,因为目前有现成的api已经封装了这些协议,对用户是透明的。对于ldap服务器,只是浅谈下资源是如何存放的? 很多人都说ldap是数据库,其实也可以这么理解,因为ldap有一个存放资源的地方,跟数据库类似。但资源存放的方式却与数据库不同(这里的数据库指的是关系型数据库)。 了解数据库的人都知道,rdbms是以表为单位,表跟表之间是相互关联的。而ldap中的资源却是层次型的,是以树的方式进行存储的,这样做的目的是为了便于查询。这是ldap与数据库最大的不同。

  e.g.                                                                单位名称

                                             部门A                    部门B                  ....

                                  账户A1 账户A2...            账户B1 ....

有了树这种结构,对资源的查找就会非常方便。 

在实际的使用中,如何来配置这些资源呢? 可以通过一些GUI来实现,比如ldap browser/open ldap等工具进行配置,可以把它们想象成db2 control center 或者 oracle Sql*Plus,通过这些工具,可以配置这棵树,查询/修改这棵树等

对于编程开发人员来说,如何来对ldap中的资源进行操作呢? 这里主要介绍一下java中JNDI.

JNDI:java命名和目录接口,包含两个方面,命名接口和目录接口。

命名接口:与DNS类似,给定一个名字,返回一个值。

目录接口:如何理解目录呢? 其实就是一颗树,可以参照linux文件系统,每个文件可以是目录或者就是文件本身,树的节点可以是叶子节点也可能是根节点。也就是说,给定一个名字,返回的值是一颗树。可以认为目录接口包含命名接口(当这棵树只有根节点时)。

JNDI API是J2SE中的标准API,是通用的API。JNDI中包括5个包:javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi。

  常用的JNDI操作有:bind,unbind,lookup,rename,NamingEnumeration listBindings,NamingEnumeration list。

  使用JNDI来访问命名服务或目录服务,操作步骤如下:

  1、建立一个HashTable,包含定义所希望使用的JNDI服务的属性,所希望连接的LDAPIP地址以及端口;

  2、将与认证成用户登录有关的任何信息添加到散列表中;

  3、创建初始context对象。如果访问命名服务,则使用InitialContext类,如果访问目录服务,则要使用InitialDirContext类;

  4、使用刚才得到的context对象执行所需的操作,如添加新的条目或者搜索条目;

  5、完成操作后关闭context对象。

 

 

更多的细节,请见我转载的两篇文章:LDAP目录服务以及JNDI 理解学习  

                  理解与应用ldap服务器  

 

欢迎批评指正!

 

 

 

 

 

 

转载于:https://www.cnblogs.com/renzhezhiye/archive/2013/05/05/3061936.html

你可能感兴趣的文章
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
中国剩余定理
查看>>
uva 10137 The trip
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>
jquery的contains方法
查看>>