高分求域用户认证问题 http://doc.linuxpk.com/1101.htmlhttp://cn.php.net/ldap 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是什么服务器???目前只知道LDAP可以完成这个功能。 可以在httpd.conf里面设置: HostnameLookups on|off|double 如果是使用on,那么只有进行一次反查,如果用double,那么进行反查之后还要进行一次正向解析,只有两次的结果互相符合才行,而off就是不进行域名验证。 如果为了安全,建议使用double;为了加快访问速度,建议使用off ldap_connect 验证用户名及密码ladp_search 来获取用户的单位及真实姓名等信息具体的串需要根据 域服务器走. ldap_bind( $ldap["conn"], $ldap["dn"], $ldap["pass"] 提示Invalid credentials不知道是不是需要安装什么东西第一次接触ldap,郁闷呀 一点一点进步,目前能验证了,读取用户信息还是失败$ldap["result"] = @ldap_search( $ldap["conn"], $ldap["dn"], "uid=$ldap['user]";Warning: ldap_search(): Search: Operations error 有没有达人帮忙呀 在调试期间,不要用 @ 来屏蔽错误信息.一般来讲, ldap_search 失败主要原因是由于 第三个参数 $filter 的串有问题..建议你去下载一个 Active Directory Explorer 查看你当域的 directory 结构. 关键是$ldap["dn"]的定义不知道,总提示32:No such object 。 如果你不清楚ldap的所有需要参数可以先用现存的Idap Client 试出效果再回来做PHP 一般来讲, ldap_search 失败主要原因是由于 第三个参数 $filter 的串有问题.. 少讲了一个 第二个参数 base_dn这个需要 问域管.估计目前国内的域管都不知道怎么弄这些.要得到这个 base_dn 串. 可以用上面我讲的 建议你去下载一个 Active Directory Explorer 查看你当域的 directory 结构. 理解与应用LDAP服务器前段时间一直在做LDAP+POSTFIX相关项目,先把关于LDAP的一些经验写出来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固。) 先声明:我写的只是我对LDAP的一些理解,如果我的理解错误,那就是对兄弟们的误导。所以你可以直接看文章的结尾提供的几个网址。 关于LDAP的概念随便网上有很多,我不想重复,这里只是说一下我自己的理解。 都说它是“轻量级目录协议”,太专业,我不懂,我只把它想象成“简单”的目录协议。 几个很重要的概念,以后会用到: --------------------------------------------- dn :一条记录的位置 dc :一条记录所属区域 ou :一条记录所属组织 cn/uid:一条记录的名字/ID --------------------------------------------- 实际上更多时候我只把它看成数据库。我把它和我非常熟悉的MYSQL数据库做比较,通常会得到更好的理解: MYSQL用“表”储存数据,LDAP用“树” MYSQL指定一条记录要3个条件:DB、TABLE、ROW。 LDAP却更自由,为什么呢?因为LDAP数据是“树”状的,而且这棵树是可以无限延伸的,假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou,呵呵MYSQL里面好象没有这DD),最后就是这个苹果的名字(uid,记得我们设计MYSQL或其它数据库表时,通常为了方便管理而加上一个‘id’字段吗?)。 好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!我还是说说LDAP里要怎么定义一个字段的位置吧,树(dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou=dong),苹果(cn=honglv),好了!位置出来了: dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com 一个有名的画家说过:“世上没有相同的2个鸡蛋”。当然也没有相同的2个苹果……,同样,在LDAP里也不可能存在2个相同的dn。 LDAP数据填充原理: 一棵树的生长,要循序渐进,如果还没有长出某个分叉,就不可能在那个分叉里长出苹果(问:FT!苹果是长在分叉上的吗?答:为了便于理解,你就当它是吧),同样,LDAP数据库也要一步步的充实,举一个学校数据库的例子,我们将要把一个庞大的学生档案放到LDAP里,大致需要这么做: --------------------------------------------- 1、建立“树根”,这是通过修改“slapd.conf”来实现的,由于现在的目的是理解,所以具体步骤就不说了,反正就是在这一步建立了一个“dc=ourschool,dc=org”这样一个“树根”。 注意:我把它理解成“目录”,或者“容器”,甚至它本身也是文件(苹果)的特殊形式,熟悉LINUX文件系统的朋友会更容易理解。 2、建立18个系,分别是“dn:ou=computer,dc=ourschool,dc=org”、“dn:ou=film,dc=ourschool,dc=org”…… 3、当然是在每个系里面建立专业,比如“dn:ou=linux,ou=computer,dc=ourschool,dc=org”…… 4、(开始长苹果吧!)加学生喽——“dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”…… 5、已经完成了吗?对了!学生的详细信息还没有呐!不过先这样吧,反正记录是可以编辑的。 --------------------------------------------- LDAP记录的详细信息 dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org objectClass:organizationalPerson cn:stan cn:小刀 sn:小刀 description:a good boy (以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中) 上面不是说没有学生详细信息吗?怕你着急,就马上写出来了,只是还没有导入到LDAP里,那是以后的事。这里我先就你可能会产生的疑问做回答。 --------------------------------------------- Q1:“cn”不是在“dn”里定义了吗,怎么又在后面重新定义了? 答:你要把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一个整体,它只是属性dn的值。 Q2:怎么后面有2个“cn”,我以哪个为准? 答:区别于普通数据库,LDAP每个属性一般可以具有多个值,这样不好吗?你在学校数据库里找我的时候,只要记得我的一个cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我! Q3:就这些属性了吗?我都不知道你是男是女。 答:先声明,偶是男地。 LDAP对记录的属性做了严格的限制(这一点我不太喜欢),也就是说,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值等,他们都给你规定好了。 幸好你有选择的权利,比如这次我们是储存学生信息,那么我们就定义一个“objectClass:organizationalPerson”,这样“organizationalPerson”这个类所规定的所有属性我们都可以用了,而且确实很适合我们。 虽然这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶替。 如果我们能自己建立“类”就更好了,但目前我还没有时间去研究这个东西,我也期望高手指点啊 :) --------------------------------------------- 好了!看到我贴的图了吗?那是我偷别人的,差不多能用我就不自己画了 :) ############################################################## 关于安装配置LDAP,使之储存系统用户,这里有一个非常好的网址,如果你的英文不是很差,都应该做的来,我偷个懒,就先不写这方面的东西喽: http://www.mandrakesecure.net/en/docs/ldap-auth.php 上面的方法我已经试过,是可行的,如果兄弟们配置的时候出现问题我们可以讨论讨论。 关于LDAP+POSTFIX,POSTFIX里的“LDAP_README”中介绍的很详细,我再说就是重复了。 ############################################################## 其它相关资源: yala (很实用的数据库操作工具,简单的说,他就是MYSQL的phpmyadmin,自己找下载地址吧~) http://www.openldap.org/ (说实话,我一直没用上它,不过它是官方网站,不提也不好) http://ldap.akbkhome.com/ (什么‘类’下面有什么‘属性’,在这里找) ldap 精华文章http://www.chinaunix.net/jh/49/ 问题已经解决,第一次接触LDAP...谢谢各位! 在网页中插入FLV格式的视频没整合后台时能播放,整合后台后在php环境下就不能播放 update不能更新空值? 请教关于图片上传的问题 为什么不能动态显示图片?达人请进 winxp+apache+mysql+php问如何用mail()函数来发email????????? 这个正则表达式怎么写? 求救!!PHP SESSION 问题。 100分致谢。 我刚刚做了两个网站,几经修改,终于与大家见面了!多多请教(散分) 为什么php在win和linux下对于相对路径的解释不一致? 用session登录的一些问题 php的mssql_fetch_row问题 数组取值问题
HostnameLookups on|off|double
如果是使用on,那么只有进行一次反查,如果用double,那么进行反查之后还要进行一次正向解析,只有两次的结果互相符合才行,而off就是不进行域名验证。
如果为了安全,建议使用double;为了加快访问速度,建议使用off
不知道是不是需要安装什么东西
第一次接触ldap,郁闷呀
$ldap["result"] = @ldap_search( $ldap["conn"], $ldap["dn"], "uid=$ldap['user]";
Warning: ldap_search(): Search: Operations error
有没有达人帮忙呀
建议你去下载一个 Active Directory Explorer 查看你当域的 directory 结构.
可以先用现存的Idap Client 试出效果
再回来做PHP
少讲了一个 第二个参数 base_dn这个需要 问域管.估计目前国内的域管都不知道怎么弄这些.要得到这个 base_dn 串. 可以用上面我讲的
建议你去下载一个 Active Directory Explorer 查看你当域的 directory 结构.
都说它是“轻量级目录协议”,太专业,我不懂,我只把它想象成“简单”的目录协议。 几个很重要的概念,以后会用到:
---------------------------------------------
dn :一条记录的位置
dc :一条记录所属区域
ou :一条记录所属组织
cn/uid:一条记录的名字/ID
--------------------------------------------- 实际上更多时候我只把它看成数据库。我把它和我非常熟悉的MYSQL数据库做比较,通常会得到更好的理解: MYSQL用“表”储存数据,LDAP用“树”
MYSQL指定一条记录要3个条件:DB、TABLE、ROW。
LDAP却更自由,为什么呢?因为LDAP数据是“树”状的,而且这棵树是可以无限延伸的,假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou,呵呵MYSQL里面好象没有这DD),最后就是这个苹果的名字(uid,记得我们设计MYSQL或其它数据库表时,通常为了方便管理而加上一个‘id’字段吗?)。 好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!我还是说说LDAP里要怎么定义一个字段的位置吧,树(dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou=dong),苹果(cn=honglv),好了!位置出来了:
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com 一个有名的画家说过:“世上没有相同的2个鸡蛋”。当然也没有相同的2个苹果……,同样,在LDAP里也不可能存在2个相同的dn。
LDAP数据填充原理:
一棵树的生长,要循序渐进,如果还没有长出某个分叉,就不可能在那个分叉里长出苹果(问:FT!苹果是长在分叉上的吗?答:为了便于理解,你就当它是吧),同样,LDAP数据库也要一步步的充实,举一个学校数据库的例子,我们将要把一个庞大的学生档案放到LDAP里,大致需要这么做:
---------------------------------------------
1、建立“树根”,这是通过修改“slapd.conf”来实现的,由于现在的目的是理解,所以具体步骤就不说了,反正就是在这一步建立了一个“dc=ourschool,dc=org”这样一个“树根”。 注意:我把它理解成“目录”,或者“容器”,甚至它本身也是文件(苹果)的特殊形式,熟悉LINUX文件系统的朋友会更容易理解。
2、建立18个系,分别是“dn:ou=computer,dc=ourschool,dc=org”、“dn:ou=film,dc=ourschool,dc=org”……
3、当然是在每个系里面建立专业,比如“dn:ou=linux,ou=computer,dc=ourschool,dc=org”……
4、(开始长苹果吧!)加学生喽——“dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”……
5、已经完成了吗?对了!学生的详细信息还没有呐!不过先这样吧,反正记录是可以编辑的。
---------------------------------------------
LDAP记录的详细信息
dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org
objectClass:organizationalPerson
cn:stan
cn:小刀
sn:小刀
description:a good boy
(以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中)
上面不是说没有学生详细信息吗?怕你着急,就马上写出来了,只是还没有导入到LDAP里,那是以后的事。这里我先就你可能会产生的疑问做回答。
---------------------------------------------
Q1:“cn”不是在“dn”里定义了吗,怎么又在后面重新定义了? 答:你要把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一个整体,它只是属性dn的值。
Q2:怎么后面有2个“cn”,我以哪个为准? 答:区别于普通数据库,LDAP每个属性一般可以具有多个值,这样不好吗?你在学校数据库里找我的时候,只要记得我的一个cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我!
Q3:就这些属性了吗?我都不知道你是男是女。 答:先声明,偶是男地。 LDAP对记录的属性做了严格的限制(这一点我不太喜欢),也就是说,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值等,他们都给你规定好了。 幸好你有选择的权利,比如这次我们是储存学生信息,那么我们就定义一个“objectClass:organizationalPerson”,这样“organizationalPerson”这个类所规定的所有属性我们都可以用了,而且确实很适合我们。 虽然这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶替。 如果我们能自己建立“类”就更好了,但目前我还没有时间去研究这个东西,我也期望高手指点啊 :)
---------------------------------------------
好了!看到我贴的图了吗?那是我偷别人的,差不多能用我就不自己画了 :) ############################################################## 关于安装配置LDAP,使之储存系统用户,这里有一个非常好的网址,如果你的英文不是很差,都应该做的来,我偷个懒,就先不写这方面的东西喽:
http://www.mandrakesecure.net/en/docs/ldap-auth.php
上面的方法我已经试过,是可行的,如果兄弟们配置的时候出现问题我们可以讨论讨论。 关于LDAP+POSTFIX,POSTFIX里的“LDAP_README”中介绍的很详细,我再说就是重复了。
##############################################################
其它相关资源:
yala (很实用的数据库操作工具,简单的说,他就是MYSQL的phpmyadmin,自己找下载地址吧~)
http://www.openldap.org/ (说实话,我一直没用上它,不过它是官方网站,不提也不好)
http://ldap.akbkhome.com/ (什么‘类’下面有什么‘属性’,在这里找)
谢谢各位!