Directoryのアカウント情報をいじる場合のあれこれちと実験中。PHPのLDAP関数を使ってActiveDirectoryのグループやユーザ情報を操作したい場合の話。可能不可能で言えば「可能です」。PHPのバージョンは少し古くてCentOS5系列準拠の5.1.6。WinはWinSvr2008R2。TLS接続できること。「変更」をしたい場合は必須っぽい。Linuxのphp-ldap経由でADにTLS接続しようとする場合、OpenLDAPクライアントの設定に左右される。never」の1行を追加して証明書の正当性判断を完全に殺す。後者がてっとり早くはあるがなりすまし判断は全くできなくなるので注意。ldap_connectでの接続先は「ldaps://」ではじめる。「Administrator」権限でbindできれば一通りはできそうな感じ。ユーザアカウントを特定グループに所属させる場合ユーザ側から見た所属グループのattributeは「memberof」だが、これは操作できないっぽい。逆にグループ側のattribute「member」にユーザを追加する。するとユーザのmemberofも自動で追加される。ユーザアカウントのパスワードattributeは「unicodePwd」。これはいかなる方法を持っても閲覧は不可、らしい。別に読めなくても追加や変更はできる。一般的に、unicodePwdに入る値は「パスワード平文をダブルクォーテーションて括ったもの」を「UTF-16LEに変換」し更に「base64でエンコードする」とある。上記を真正直に捉えて下記のようにやろうとするとハマる。base64_encode(mb_convert_encoding("\"newpass\"","UTF-16LE"));ldap_mod_replace($ld,$txtDn,$arrEntry);どうもPHPのLDAP関数はbase64エンコードを自動でやってくれるようで、1行目のbase64_encodeは不要っぽい。IS11CA話その2。困ったこともないでもない。「風ノ旅ビト」軽くプレイ感想。総アクセス数:1,072,687。