ActiveDirectoryにはuidが存在しない様だ.
へぇ~…って、じゃあログインユーザー自身の情報をどうやって取得すればいいんだよ!? orz
普通に考えればldap_searchのフィルタに
'(uid=' . $userid . ')'
の様に指定するんだろうけど、uidが存在しないんじゃなぁ…
と言う事でインターネットの海にどっぷりと沈みこみ、数時間後にようやく発見.
何でこんなに時間がかかったかは秘密.
秘密と言うか「cn」や「uid」をAttribute(属性)と呼ぶ事が分からなかったが為に、かなりのタイムロス orz
で、結局ズバリのページを見つけて歓喜↓
LDAP Attributes from Active Directory Users and Computers
※画面を少し下にスクロールしたら表があります.
「uid」の代わりに「sAMAccountName」(または「userPrincipalName」)を使えそうです.
これで心おきなく情報を取り放題ですよ.
$objConnection = ldap_connect('ldap://example.com', 389);
or die('could not connect Active-Directory.');
ldap_set_option($objConnection, LDAP_OPT_PROTOCOL_VERSION, 3)
or die('could not set protocol-version...');
if (! $objConnection) die('connection-object is empty.');
if (! @ldap_bind($objConnection, 'userid@example.com', 'password'))
die("error.<br>reason... " . ldap_error($objConnection) . "<br>");
if ($objResult = @ldap_search($objConnection, 'OU=exampleou,DC=example,DC=com', '(sAMAccountName=userid)', array('cn', 'sAMAccountName', 'userPrincipalName', 'mail'))) {
$aryResult = ldap_get_entries($objConnection, $objResult);
print_r($aryResult);
} else {
echo 'could not get entries.<br>';
}
ldap_unbind($objConnection);
echo 'finish.';
0 件のコメント:
コメントを投稿