PHP LDAP扩展是否有办法检索默认情况下不返回的AD属性/特性?
具体来说,我正在尝试检索lockedOut
属性。当您使用ldap_get_attributes
时,默认情况下不会检索此属性。在PowerShell中,您必须指定属性才能检索它:
Get-AdUser -Identity foo -Properties LockedOut | Select LockedOut
但是尝试用PHPLDAP相同的方式指定属性似乎不起作用。
$result = ldap_search($conn, $dn, "cn=foo", ["lockedOut"]);
if ($result === false) {
// Handling error...
}
$count = ldap_count_entries($conn, $result);
if ($count !== 1) {
// Handling error...
}
$entry = ldap_first_entry($conn, $result);
// This array does not contain the expected "lockedOut" attribute
$attr = ldap_get_attributes($conn, $entry);
// No array returned but false (error)
$value = ldap_get_values($conn, $entry, "lockedOut")
我觉得这些非默认属性是不能用PHP LDAP(property!= attribute)检索的。
2条答案
按热度按时间siv3szwd1#
我不知道
lockedOut
属性,但是PHP手册页上的一个评论者设法获取了一些其他的非标准或操作属性,例如使用下面的方法创建和修改时间戳。也许,您可以尝试将lockedOut
添加到该属性列表中,并使用此方法获得一些成功?正如手册页上的另一条注解所建议的,您也可以尝试遍历所有条目,直到找到
lockedOut
,这是另一个选项:如前所述,另请参阅this answer。
如果你只想知道用户是否被锁定,你可以读取
lockoutTime
并检查它的值,零或未设置的值表示用户没有被锁定。luaexgnf2#
有一个默认属性可作为解决方法执行此工作:
lockoutTime
.它似乎是这样运作的:
lockoutTime = <not set>
lockoutTime = 0
lockoutTime = 1+
(= MS文件时间;自1601 - 01 - 01 UTC以来的100纳秒)
解决方法代码:
A reference about it在Python LDAP的帖子上。