我成功地查询了使用以下代码的用户的Active Directory: $filter = (&(objectCategory=person)(samaccountname=someusername)); $fields = array("samaccountname","mail","manager","department","displayname","objectGUID"); $user = ldap_search($ldapconnection, $baseDn, $filter, $fields); 生成的数组给出了manager属性的此值: CN=McBossy\, Boss,OU=Users,OU=CentralOffice,DC=ds,DC=example,DC=com 对我来说,这看起来像是一个杰出的名称.但是,当我尝试查询经理记录时, $filter = (&(objectCategory=person)(dn='CN=McBossy\,
以下是关于 ldap 的编程技术问答
我有一个我已经构建的" Intranet"网站,该网站具有自己的登录系统(用户注册为新用户,并使用其用户名/密码登录到该站点).但是,现在我想扩展它,并让Intranet网站使用现有的ActiveDirectory进行身份验证.这就是我要寻找的东西 - 当用户访问此Intranet站点(http://intranetsite/mySite)时,用户的域凭据将针对Active Directory验证,如果用户的凭据匹配AD,则会向用户介绍Intranet站点的主页. 我是AD的新手,不知道该如何进行此配置.我的Intranet网站围绕PHP构建,并在应用程序服务器上使用Apache;广告在不同的IIS服务器上. 我需要哪些信息,然后将这些信息放在哪里(进入我的网站?htaccess?其他任何地方?),以便我可以使用AD身份验证?只是"配置"足够了,还是我需要为此身份验证编写明确的PHP代码? 任何指针都非常感谢. 解决方案 如果您仅在寻找身份验证,而没有其他
我设置了用于LDAP身份验证的Nagvis和Nagios. 我在Nagvis中有一个监视点(链接),这将我带到了Nagios Core中的服务信息. 当我单击Nagvis中的链接到达Nagios时,我会收到以下错误: /var/log/httpd24/error_log: [cgi:error] [pid 25523] [client 155.157.39.194:23160] Premature end of script headers: status.cgi, referer: https://[EM Server FQDN]/nagios/cgi-bin/status.cgi?host=all 当我降落在下一页时,我会遇到一个内部服务器错误页面,该页面只告诉我咨询错误日志.点击F5或浏览器上的后退导航按钮可以解决问题. 当我用基本身份验证替换LDAP身份验证时,不会发生任何问题. 我的CGI文件具有适当的权限. 在LDAP身份验证的过程中,一定会丢失某些东西?
我有此代码可针对我的用户使用LDAP目录进行身份验证.当密码不正确时,它会返回false,但是如果密码空白,则可以对用户进行身份验证.有什么想法会发生吗? if (@ldap_bind($ds, $user_dn, $password) || sha1($password) == '484h84h4hf4Ffwj49393393j93j') { $valid = true; } else $valid = false; 解决方案 如果您提供了一个空密码,则向目录服务器指示您正在执行匿名简单绑定. RFC 2251第4.2.2节中描述了此行为: If no authentication is to be performed, then the simple authentication option MUST be chosen, and the password be of zero length. (This is often done by LDA
我正在使用Windows连接到安全LDAP服务器的问题,我到处都在网上看到同样的东西,而没有解决方案,这是迄今为止奏效的. 我尝试使用IIS和Wampserver.我已经将libeay32.dll和ssleay32.dll放入我的System32目录中并启用了LDAP扩展. 这是我的代码: putenv('LDAPTLS_REQCERT=never'); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); $resource = ldap_connect("ldaps://{redacted}/", 636) or die ("Could not connect."); ldap_set_option($resource, LDAP_OPT_PROTOCOL_VERSION, 3) $bound = ldap_bind($resource, "{redacted}\ldap", "****"); echo ldap_erro
我试图让ldap_bind追踪其在做什么.我有以下 ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); putenv('LDAPTLS_REQCERT=never'); error_reporting(E_ALL); ini_set('display_errors', 1); $ds = ldap_connect($server); $r = ldap_bind($ds, $admin, $passwd); 我删除了一些设置变量的代码.但是,我想查看跟踪语句,以帮助麻烦射击另一个问题. 解决方案 设置选项ldap_set_option后,您需要使用ldap_error($ds)打印出错误.以下链接 http:///ourlife01.blogspot.co. UK/2012/05/Debugging-LDAP-PHP-Scripts.html 有一个例子.
我知道我的错误将变得很简单,但我试图找到问题,但我看不到,也许您可以帮助我.... 我正在尝试使用PHP创建功能,因此我可以连接到LDAP并找到所需的信息. 我的PHP代码如下: $ldapconfig['host'] = "127.0.0.1"; $ldapconfig['port'] = NULL; $ldapconfig['basedn'] = "dc=example,dc=com"; $ldapconfig['binddn'] = "user"; $ldapconfig['bindpw'] = "password"; function ldap_authenticate($user, $pass) { global $ldapconfig; ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); if ($user != "" && $pass != "") { $ds=ldap_connect($lda
在当前用户上运行搜索以检索所有属性的最佳方法,包括使用LDAP/PHP中的Active Directory中的相关组? 对于属性,主要是名字,姓氏和显示名称. 对于相关组,只有用户是成员的组,例如函数成员. 我尝试了一些选项,但似乎无法获得正确的过滤/搜索组合,大多数示例涵盖了有一个已知组的用户列表. 成功绑定后,我尝试过运行它: $attributes = array("displayname"); $filter = "(&(sAMAccountName=$username))"; $result = ldap_search($ds, $ldapconfig['basedn'], $filter, $attributes); $entries = ldap_get_entries($ds, $result); if($entries["count"] > 0){ echo "displayName: ".$entries[0]['displaynam
我的php脚本有以下问题: php警告:ldap_bind():无法绑定到服务器:无法联系LDAP服务器. ldap_connect()说"成功",但ldap_bind()失败,如何解决该问题? 解决方案 连接打开会话.绑定实际上是对您进行身份验证的原因.因此,您连接但未使用有效的凭据登录. 其他解决方案 由于selinux限制端口,HTTPD可以使用RHEL7(CentOS7)上的此错误. LDAP端口389和636不在默认允许列表中,您可以解除以下方式: setsebool -P httpd_can_network_connect 1 您可以通过尝试插座到LDAP服务器来测试限制: fsockopen('LDAP-Server-IP', 389); 它将给出"拒绝的权限",显示其已被阻止而不是凭据问题. 还要检查您的Selinux审核日志文件是否已阻止其他内容. 其他解决方案 ldap_bind()函数要求三个参数:
我正在尝试将一些用户添加到我的LDAP DB中,但是当我使用一些特殊字符(例如",.")时,我会遇到一些错误(无效的DN语法).我需要一个逃脱所有字符的功能.我尝试Preg_Quote,但在某些情况下会遇到一些错误. 预先感谢 代码: $user = 'Test , Name S.L'; if(!(ldap_add($ds, "cn=" . $user . ",".LDAP_DN_BASE, $info))) { include 'error_new_account.php'; } 解决方案 编辑 2013年1月:添加支持DN字符串中的前导/尾随空间的支持,per rfc 4514 .感谢 编辑 2014:我将此功能添加到php 5.6 .下面的代码现在是较早的php版本的类似类似的替换. if (!function_exists('ldap_escape')) { define('LDAP_ESCAPE
我最近将Ubuntu升级到版本16.04,并将PHP升级为版本7.但是,LDAP连接不起作用. 如何在PHP 7中启用LDAP? 解决方案 将LDAP安装在PHP版本7.0(OR 7.1)的灯上: apt-get install php7.0-ldap(或使用apt-get install php7.1-ldap) service apache2 restart 之后,创建一个PHP文件以获取PHP配置PHPINFO(); 现在安装了LDAP. 其他解决方案 提供PHP版本号不再需要: apt-get install php-ldap 现在就足够了,正确的软件包版本将自动安装. ps :请注意,如果您使用分布提供的标准PHP软件包,则是正确的.如果您正在为PHP使用其他PPA,例如 sury One ,您将必须将版本编号指定为是多个版本. 其他解决方案 为您的特定PHP版本安装两个PHP LDAP,我的是 sudo apt
我有一个主动指导结构,例如,用户对象位于OU中,IT,技术,人力资源,帐户等. Apreriate Web Services. ldap_search()需要基础DN. 我试图用 搜索 ldap_search($ldap, "dc=country,dc=company,dc=co,dc=uk", "(samaccountname=$username)", array("memberof")); 但是PHP给出了"操作错误".相反,我指定OU ldap_search($ldap, "ou=sales,dc=country,dc=company,dc=co,dc=uk", "(samaccountname=jake)", array("memberof")); 然后搜索可以. 我可以使用通配符吗? 在旁注上,用户对象是否应该在OU中?因为我是最初将它们移入内部的菜鸟! 编辑: 以jpblanc的荣誉指导我朝着正确的方向引导我, http://blog
我有一个PHP脚本,该脚本可以进行LDAP连接,绑定和搜索.它与大多数Active Directory服务器的运作良好,但是我们的一个客户有问题.脚本返回 Strong(er) authentication required. 尝试ldap_bind时错误. 我进行的所有搜索都指示我解决两个可能的问题: 我必须将LDAP_OPT_PROTOCOL_VERSION设置为3 - 我做过和以前做过,所以这不是我的问题. 广告服务器配置为使用SSL身份验证 - 但是我们的客户坚持认为这是默认的Windows 2008 R2服务器安装,并且不能肯定地默认为SSL. 发生此错误的其他原因可能是什么? 更新 Active Directory Server上需要SSL ... 解决方案 如果Active Directory Server要求使用ldaps://.如果这是无效证书授权的问题,您可以通过发行 来忽略Windows中的有效性 putenv(
我正在尝试通过PHP-LDAP在LDAP中连接.我使用ldap_bind()遇到了一个问题: $username = 'josue.ruiz'; $password = 'pass'; $ldapconfig['host'] = '10.10.10.11'; $ldapconfig['port'] = 389; $ldapconfig['basedn'] = 'dc=domain,dc=com'; $ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); $dn="cn=".$username.",ou=Technology,".$ldapconfig['basedn']; if ($bind=ldap_bind($ds,
我想创建一个以每日cron运行的PHP脚本.我想做的是通过Active Directory中的所有用户枚举,从每个条目中提取某些字段,并使用此信息来更新MySQL数据库中的字段. 基本上我想做的是在Active Directory和MySQL表之间同步某些用户信息. 我遇到的问题是,Active Directory Server上的Sizelimit通常以每个搜索结果设置为1000个条目.我曾经希望php函数" ldap_next_entry"一次只能通过一次获取一个条目来解决这个问题,但是在您调用" ldap_next_entry"之前,您首先必须调用" ldap_search",这可以触发sizelimit超过误差. 除了从服务器中删除sizelimit之外,还有什么办法?我可以以某种方式获得结果的"页面"? btw-我目前不使用任何第三方库或代码.只是PHPS LDAP方法.虽然,我当然可以使用图书馆,如果有帮助的话. 解决方案 在为Zend Frame
我正在尝试使用PHP绑定到LDAP服务器.这是一个相当简单的过程,除了我无法遇到我遇到的证书错误.我的身份证书很好,因为我可以使用Apache Directory Studio连接到服务器.有什么方法可以自动接受服务器证书?类似于您使用Apache Directory Studio单击"接受此证书"的方式?我知道这不是很好的安全性,但是我只需要在这一点上发挥作用,稍后可能会避开证书问题. 谢谢 解决方案 您没有指定环境,因此是答案(在此网站的其他地方找到:我如何求解ldap_start_tls()"无法启动tls:connect tls:connect rorry in php?): linux:在客户端计算机(PHP Web服务器)上修改系统正在使用的ldap.conf文件,在rh/fedora中,您想要的文件是/etc/openldap/ldap.conf(不是/etc/ldap.conf)系统身份验证... ).添加/修改以下行: TLS_REQCERT ne