我不知道如何在AD中获得用户唯一标识符(SID)。代码片段:
...
$filter="(&(samaccountname=".$this->username.")(memberOf:1.2.840.113556.1.4.1941:=CN=GROUP_NAME,OU=Security,DC=something,DC=something))";
$attribute = array("cn","objectsid","description", "group", "member", "samaccountname");
$sr=ldap_search($this->conn_ldap, $this->ldap_dn, $filter, $attribute);
if ($sr)
{
$this->info = ldap_get_entries($this->conn_ldap, $sr);
if ($this->info["count"] == 1){
ldap_close($this->conn_ldap);
return true;
}
... 我可以通过以下方式获取信息:
echo $this->info[0]["cn"][0];或
echo $this->info[0]["objectsid"][0];在第一个输出中,我可以看到0�@�d^�WL7�U中的用户名称,我认为sid应该像S-......一样
发布于 2019-01-10 04:58:57
这在64位系统上有效,我认为它更简洁。
function bin_to_str_sid($binsid) {
$parts = unpack('Crev/x/nidhigh/Nidlow', $binsid);
$ssid = sprintf('S-%u-%d', $parts['rev'], ($parts['idhigh']<<32) + $parts['idlow']);
$parts = unpack('x8/V*', $binsid);
if ($parts) $ssid .= '-';
$ssid .= join('-', $parts);
return $ssid;
}https://stackoverflow.com/questions/39533560
复制相似问题