现在流行的支持多语言访问的如何访问ldap服务器器有哪些呀

天极传媒:天极网全国分站
您现在的位置: >>
使用PHP连接LDAP服务器
  本文将演示如何使用连接一个LDAP。具体的例子是连接到一个公共的LDAP服务器并且进行搜索。这个例子模拟的是Netscape Communicator 4.*,通过自己的地址本连接到LDAP资源。 LDAP介绍  可能不少人已经听说过LDAP,但是却不了解它具体是什么东东和如何工作。在这里我将不会很详细地介绍LDAP,只是对该协议做一个简介。  LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。  LDAP最基本的形式是一个连接的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。  简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。要求   PHPV.4(以前的版本也可以,不过没有经过),编译支持LADP,即使用编译时带--with-ldap公共的LDAP目录。在例子中提供了两个。例子概览1.设置公共LDAP服务器的信息2.创建一个LDAP查询3.连接到LDAP服务器 4.如果连接成功,处理查询5.格式化输出6.关闭连接7.设计搜索界面的HTML表格8.显示结果设置公共LDAP服务器的信息  我们要做的第一件事情是定义所有欲搜索的LDAP服务器的信息"LDAP_NAME" = 新的LDAP项目的名字"LDAP_SERVER" = 新的LDAP项目的IP地址或者主机名"LDAP_ROOT_DN" = 新的LDAP项目的根的辨识名<?php $LDAP_NAME[0] = "Netscape Net Center"; $LDAP_SERVER[0] = ""; $LDAP_ROOT_DN[0] = "ou=member_directory,"; $LDAP_NAME[1] = ""; $LDAP_SERVER[1] = ""; $LDAP_ROOT_DN[1] = ""; //如果没有选择服务器的话将它设置为0 if(!$SERVER_ID) $SERVER_ID=0; ?>
1(作者:QQ新人类责任编辑:)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电Windows&下搭建LDAP服务器
五一闲来没事,加上项目正在进行UAT。抽空研究了一下LDAP相关知识。随手做一个记录。
为了方便阅读还是先介绍一下什么是LDAP?
前言、Lightweight Directory Access Protocol:
The Lightweight Directory Access Protocol , or
LDAP ,is an
querying and modifying
)。LDAP全称是一个轻量级的目录访问协议,它是建立在TCP/IP基础之上的用来查询和修改目录服务的。这是照着wiki翻译的,但是有人要问了什么是directory
Service(目录服务)?
按照wiki的说法的话讲:在软件行业,目录就如同一个字典,他使得通过某一名称去查找绑定在该名称上的值得方式成为一种可能。有点类似Java中Map的概念。a
directory service is simply the software system
that stores, organizes and provides access to information in a
directory.
一个目录服务就是一个简单的软件系统,在这个目录上提供了存取和组织信息的功能。LDAP目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表,等等。
OK,进入正题。Google搜索 ,终于找到了一个比较好的流行的:。
一、OpenLDAP***和配置
***还是比较简单的,一直next就好。
这里记得把上面2个都选上,将LDAP注册为系统的一个服务,默认***位置:C:\Program
Files\OpenLDAP,
进入***目录,编辑slapd.conf文件:
ucdata-path ./ucdata
include ./schema/core.schema
在下面加入:(注意你的系统路径,可能随***位置不同而稍有差异)
include ./schema/core.schema&
(这里是和原来有的,如果加入的话就重复包含了,不能正常启动了。应该除这句外都加入)include
./schema/corba.schema
include ./schema/dyngroup.schema
include ./schema/java.schema
include ./schema/misc.schema
include ./schema/cosine.schema
include ./schema/nis.schema
include ./schema/inetorgperson.schema
include ./schema/openldap.schema
这个搞定以后,在同一文件后面的(大概65-66行,修改)
suffix ”o=anotherbug,c=com“&& (直接拷贝过去引号会变成中文的。注意引号用英文的,会影响启动)
rootdn ”cn=manager,o=anotherbug,c=com“
还有第70行的位置 : rootpw secret,这里要修改为加密后的密码。
具体操作:
打开命令行,定位到***目录下,输入:slappasswd -h
{MD5} &s “替换为你想要设置的密码,无引号”
将生成的MD5密文:{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==填入原来secret位置。
OK至此配置已经搞定,可以测试一下服务了。打开命令行转到***目录下输入:sldapd -d
1& 注意命令是(slapd -d 1)
至此LDAP服务器已经搭建并可以跑起来了.下面要来测试怎么倒入.ldif格式的数据了。
二、建立条目(Entry) ,导入 ldif 后缀名文件
ldif:LDAP Data Interchange Format,基于文本。有两种类型的 LDIF 文件:第一种是描述
Directory 条目数据的,第二种是描述更新条目的。我们主要看怎么描述条目的。
打开编辑器(如Editplus,UltraEdit等),新建test.ldif内容如下:
dn: o=anotherbug,c=com
objectClass: dcObject
objectClass: organization
o: anotherbug
dc: com
dn: uid=mousepoato, o=anotherbug,c=com
uid: mousepoato
objectClass: inetOrgPerson
mail: paradise.
userPassword: admin
labeledURI:
sn: Li
cn: test
注意ldif文件对格式的要求非常严格,属性要以冒号和空格与值隔开,并且其他地方不允许有空格。否则当你导入ldif文件时,会提示出现“ldap_add:
Invalid syntax (21)”等诸多错误,另外在我机器上测试,ldif对中文支持也还不好,比如我将最后的cn:
test改为 cn: 鼠标土豆,导入就会报错。
写完保存到***目录下。在命令行输入:
ldapadd -c -x -D “cn=manager,o=anotherbug,c=com” -w
“刚才替换secret出的密码明文” -f test.ldif
运行命令后结果如下:
注意我们在ldapadd后面加上了 ”&c “
参数,他会一直运行不会因错误而终止,比如对系统已经存在的entry命令会提示但不会中止。
三、LDAP查看工具
可能大家看了这么多感觉还是很抽象,我们需要一个GUI看看LDAP到底是个什么东东。
这里推荐两个浏览工具
这是个Java 开发的 LDAP Browser/Editor 工具,不但跨平台(Windows,
Unix-like),而且功能非常完整,速度又快。运行起来的界面时这个样子的。
这是一个比较强大和专业的客户端,涵盖了大多数企业的LDAP服务类型。
一直下一步***成功后,它的配置也是比较简单的:
新建一个profile,命名为Local_LDAP
配置连接信息
这是完整配置好后的效果
四、通过 JNDI api操作LDAP例子
Javax里面提供的JNDI为我们封装好了对LDAP 的directory
service进行存取查询的函数,可以方便实用。
贴上我用JUnit4写一个对LADP服务器进行测试的代码供参考:
private static Logger log =
Logger.getLogger(TestLdapOper.class);
DirContext context =
TestLdap tldap =
public void init() throws NamingException {
tldap = new TestLdap();
context = tldap.getContext();// 获取context
public void testInsert() throws NamingException
tldap.addEntry(context, “uid=IBM,o=anotherbug,c=com”);
@SuppressWarnings(“unchecked”)
public void testGetAttributes() throws NamingException
List attNameList = new ArrayList();
attNameList.add(“o”);
attNameList.add(“dc”);
attNameList.add(“objectClass”);
Map map = JNDIUitl.getAttributes(context, “o=anotherbug,c=com”,
attNameList);
Iterator keyValuePairs = map.entrySet().iterator();
for (int i = 0; i & map.size(); i++)
Map.Entry entry = (Map.Entry) keyValuePairs.next();
Object key = entry.getKey();
Object value = entry.getValue();
(key + “==key”);
(value + “&value”);
@SuppressWarnings(“unchecked”)
public void testGetAttriValues() throws NamingException
assertEquals(“”, JNDIUitl.getAttributeValues(context,
“o=anotherbug,c=com”, “dc”).get(0) + “”);
List lst = new ArrayList();
lst = JNDIUitl.getAttributeValues(context, “o=anotherbug,c=com”,
“objectClass”);
assertEquals(“organization”, lst.get(1) + “”);
for (int i = 0; i & lst.size(); i++)
(lst.get(i));
(ReflectionToStringBuilder.toString(lst.get(i)).toString());
@SuppressWarnings(“unchecked”)
public void testSearchContext() throws NamingException
List list = JNDIUitl.searchContextSub(context,
“o=anotherbug,c=com”, “(objectClass=*)”);
for (int i = 0; i & list.size(); i++)
(list.get(i));
public void destroy() throws NamingException
context.close();
另外一款LDAP软件 LDAP Admin Tool Professional
官方地址:
C# 到LDAP 验证的代码
在我的空间文件夹里放着呢(本站的SkyDrive)
►►计算机类文件夹
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

参考资料

 

随机推荐