我可以访问执行5密码历史记录限制的Active Directory.您拥有的最后5个密码中的任何密码都不是可以将其设置或重置为密码的可行候选人. 我正在使用PHP,并且正在尝试使用LDAP调用来重置用户密码.我可以使用ldap_modify调用可以重置密码.但是不幸的是,LDAP_MODIFY根本不在乎Active Directory的密码历史记录规则,它将将密码重置为您在没有警告或错误的情况下选择的任何内容. 有什么办法有LDAP尊重此限制? 我已经研究了一段时间,但没有找到任何可靠的解决方案.任何提示或评论都非常感谢! 解决方案 如果由于任何原因修改失败,目录服务器应返回修改响应中的非零结果代码.如果发生属性约束违规(例如,自上次密码更改或任何其他属性约束违规以来,历史记录中的密码或不足的时间已经过去)目录服务器必须返回a 约束违规(19). LDAP协议不了解服务器实现如何处理密码策略. LDAP客户端必须使用上述结果代码来确定LDAP请求是否成功.
以下是关于 active-directory 的编程技术问答
我们构建了一个依赖我们的用户的LDAP目录(Active Directory)的Web应用程序(在Intranet上运行).而不是使用" MySQL)中的"用户"表"同步"目录用户,而是像使用数据库一样使用LDAP目录. 在从mySQL和LDAP用户中撤离的实体之间创建关系时,我们使用用户GUID(这是唯一的字符串). 我们的目录将永远不会超过300位用户(永远不会).我们安装了专用的DC(域控制器),以服务我们的申请请求.网络延迟不是问题. 在我们的代码中,我们可以替换几行代码以从使用LDAP切换到使用mySQL和"用户"表(数据映射器很棒) 您会这样做(没有"用户"表同步)?您反对这一点的论点是什么(这样做的方式)? 编辑 我们确实使用了"用户"表,但它非常简单,因此SQL连接并不是真正的问题,我们知道它会在A fult 用户表中具有更好的perfomance但是正在寻找反对使用LDAP 的其他论点 CREATE TABLE `user` (
我查找了ADUC中的分发列表的Objectguid属性.但是,尽管直接复制/粘贴了数据,但我的LDAP查询仍行不通.我用不同的标准询问了相同的对象,并打印出了被提取的GUID,我注意到其中的一部分的顺序不同.在这里,它们并排并排(分开了可读性). 34E16D90 BAD1 4ED7 B51A 88C5C4CE7FA2 ^----. \ / 906DE134 D1BA D74E B51A 88C5C4CE7FA2 ,您可以看到,对于每个组,对本身都是相同的,但是对成对的顺序是向后...但是对于前三个组而言.其他Active Directory工具显示GUID与ADUC相同.我询问了秩端的GUID,并且有效.有这样的解释吗? 解决方案 GUID格式很有趣.有一个混音endian模型是"标准".您可以以许多不同的方式解析二进制数据.任何特定的应用程序如何代表非二进制的GUID取决于应用程序.
我正在尝试找到一种将多个用户的ID映射到Active Directory(AD)中的相关电子邮件地址的方法,然后将输出附加到TXT文件中,最终生成一个带有电子邮件地址列表的单个文件.通过以下命令利用PowerShell广告工具,我可以输出某个用户的电子邮件地址: $user= testID Get-ADUser $user -server ml -Properties * | Select-Object mail 现在,我正在尝试调整它以跨多个用户工作,尽管我遇到的方法并未将每个结果添加或串联到TXT文件中.当循环迭代覆盖现有文本文件的内容时,每个新输出. $multiple_users = "testID1", "testID2", "testID3" foreach ($multiple_user in $multiple_users){ Get-ADUser $multiple_user -server ml -Properties * | Select-O
问候, 我已经有了与广告的工作连接,可以从中搜索和检索信息.我什至开发了一种递归方法,可以通过该方法为给定用户检索所有组.但是,如果可能的话,我想避免递归.一种方法是从广告中获取用户的TokenGroups属性,这应该是指定用户具有成员资格的组的SID列表,无论该会员资格是直接的还是间接的. . 但是,当我对用户的广告信息进行搜索时,TokenGroups属性甚至都不存在.我尝试明确要求该信息(即,使用第四参数指定为谢谢 David Kees 解决方案 解决了我自己的问题,并认为我将答案放在这里,以便其他人可以找到它.问题是使用ldap_search()函数.答案是使用ldap_read()函数而不是ldap_search().区别在于请求的范围.搜索功能使用读取功能使用" base"时" sub"(即子树)的范围.只有在使用"基础"范围时,才能找到TokenGroups信息,因此使用正确的PHP函数是键. 正如我上面提到的,我正在从perl中的其他人代码
我有一个登录页面,该页面使用PHP/LDAP供我的用户访问公司网站.下面,我创建了一个语句,该语句将用户的广告组成员资格存储在变量中,以稍后用于重定向,具体取决于用户在AD> 中的成员资格 现在,我现在还想添加从Active Directory获取用户全名的功能,并存储以供以后使用.如何修改下面的语句以将用户的全名从Active Directory存储到另一个变量中?有什么想法?? // verify user and password if($bind = @ldap_bind($ldap, $user . $ldap_usr_dom, $password)) { // valid // check presence in groups $filter = "(sAMAccountName=" . $user . ")"; $attr = array("memberof"); $result = ldap_search($ldap, $
如何通过PHP进行Active Directory查找?无需重新编译PHP. PHP版本为5.3 我想从他们的用户名中找到一个人显示名称. Web服务器是IIS 6,使用FastCGI提供了PHP. 我获得了: 的用户名 $cred = explode('\\',$_SERVER['REMOTE_USER']); if (count($cred) == 1) array_unshift($cred, "(no domain info - perhaps SSPIOmitDomain is On)"); list($domain, $user) = $cred; return $user; 那么我该如何找到名称?例如doej = John Doe 编辑: 尝试查找用户,但不确定如何找到"基本DN".无法直接访问Active Directory服务器或具有管理员权限,因此请匿名连接.
我已经对此感到困惑了几天.我尝试了各种解决方案,但无济于事.请帮助... 问题:我们有两个域控制器,这些控制器不在我们的管理之下.我们能够通过端口389上的LDAP连接,但无法在端口636上安全连接. 我们正在开发一个系统以允许许多自助服务设施,其中之一是密码恢复工具.这可以直到重置用户密码. 我找到了一些代码通过php手册似乎可以完成我们需要的事情,但似乎无法使其工作. 这是我到目前为止的代码 if ($caller==="change"){ if (($newPword1 === NULL)||($newPword1 === "" )){ return false;} if (($newPword2 === NULL)||($newPword2 === "" )){ return false;} if ($newPword1 != $newPword2) { $result["ERROR"]="1"; $result["DETAILS"]="Yo
首先有点琐事.. 在ASP.NET网站上编写了该网站,该网站使用NTLM协议来验证想要登录的用户.当他们通常使用它时,它们在网站URL中输入,他们提供其凭据,提供他们的凭据,身份验证,并在Web浏览器. 我想做的是创建将充当机器人的PHP网站.这是我的公司内部网站,我被批准这样做.我遇到的问题是管理会话.用户将能够在我的PHP网站中输入其凭据,而我的PHP网站将使用Curl将其验证到Target网站. 我到目前为止获得的代码是: $cookie_file_path = dirname(__FILE__) . '/cookies.txt'; $ch = curl_init(); //============================================================== curl_setopt($ch, CURLOPT_USERPWD, $username. ':' . $password);
我正在使用ADLDAP插件连接到Windows Server AD,但据我所知,我的问题是使用PHP LDAP_BIND. 当用户输入不正确的密码时,从LDAP_ERROR返回的错误(ADLDAP使用)是"无效的凭据".到目前为止还不错. 当用户的密码到期或在AD中,将用户设置为更改下一个登录密码(新用户,密码重置等)时出现问题.在这种情况下,用户进入身份验证的任何密码,LDAP_ERROR都会返回"无效凭据".这意味着我无法分辨用户是否真的知道过期的密码. 有人知道我怎么能解决这个问题? 解决方案 由于我遇到了同样的问题,所以我搜索过,找到了一个解决方案. define(LDAP_OPT_DIAGNOSTIC_MESSAGE, 0x0032) $handle = ldap_connect('ldap://active.directory.server/'); $bind = ldap_bind($handle, 'user', 'expiredpass
您可以在下面看到,当我对安全组进行LDAP搜索时,我没有获得任何用户信息.我想使用$_SERVER[remote_user]检查用户是否是该组的成员.我还想检索此用户的信息并使用它更新SQL数据库.这可能吗? $dn = "CN=Intra,OU=Common Security Groups,DC=mydomain,DC=local"; $filter = "(member=*)"; $ad = ldap_connect("IP") or die("Couldn't connect to AD!"); ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3); $bd = ldap_bind( $ad, "username@mydomain.local", "password") or die("Can't bind to server."); $sr = ldap_search($ad,$dn,$filter); $entries =
我正在用simplexml_load_string()来解析XML,并使用其中的数据通过LDAP更新Active Directory(AD)对象. 示例XML(简化): Bìlbö Bággįnš Gãńdåłf Thê Gręât Śām Wīšë 我首先运行ldap_search()以找到一个用户,然后继续更改其属性.使用LDAP直接将上述值直接泵入AD,将导致一些漂亮的字符出现. 例如:Bìlbö BággįnÅ¡ 我已经尝试了以下功能,无济于事: utf8_encode($str); utf8_decode($str); iconv("UTF-8", "ISO-8859-1//TRANSLIT", $str); iconv("U
我想从Linux(Linux 3.2.0-4-AMD64#1 SMP Debian 3.2.51-1 X86_64 GNU/Linux)客户端将安全的LDAP连接(LDAP)(LDAP)进行更改,以更改用户通过PHP,Active Directory中的密码. 为此,我在服务器上创建了一个自签名的证书(使用Windows Server Manager),但是当我尝试连接时,我会收到以下错误(通过打开调试选项: ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);): ldap_create ldap_url_parse_ext(ldaps://xxx.xxx.xxx.xxx) ldap_bind_s
我有一个在Windows 2008 Server R2上运行的PHP应用程序,该应用使用PHP的LDAP库对用户进行对Active Directory的身份验证. 按照这个答案,我我希望使用$_SERVER['AUTH_USER'],但是我为此获得了空白的价值.对于AUTH_TYPE和AUTH_PASSWORD也一样.变量被声明,但没有一个分配给它们的值. 我已经启用了基本身份验证和Windows身份验证角色(通过服务器管理器),但都没有解决该问题. 我正在使用PHP 5.3.14,Zend Server CE和IIS 7.5. 我需要在解决方案上应用一个符号,但不能获取当前登录的用户的凭据,我很茫然. 任何帮助将不胜感激. 解决方案 我通过在IIS中禁用匿名身份验证并启用Windows身份验证(我认为Windows身份验证已经启用了,但事实证明角色已经安装了.)现在填充. 其他解决方案 我相信身份验证的用户的正确索引是$_SERVER['R
我有一个我已经构建的" Intranet"网站,该网站具有自己的登录系统(用户注册为新用户,并使用其用户名/密码登录到该站点).但是,现在我想扩展它,并让Intranet网站使用现有的ActiveDirectory进行身份验证.这就是我要寻找的东西 - 当用户访问此Intranet站点(http://intranetsite/mySite)时,用户的域凭据将针对Active Directory验证,如果用户的凭据匹配AD,则会向用户介绍Intranet站点的主页. 我是AD的新手,不知道该如何进行此配置.我的Intranet网站围绕PHP构建,并在应用程序服务器上使用Apache;广告在不同的IIS服务器上. 我需要哪些信息,然后将这些信息放在哪里(进入我的网站?htaccess?其他任何地方?),以便我可以使用AD身份验证?只是"配置"足够了,还是我需要为此身份验证编写明确的PHP代码? 任何指针都非常感谢. 解决方案 如果您仅在寻找身份验证,而没有其他
我正在使用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/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