- blogs:
- cles::blog
2019/04/13

AD のパスワードを LDAP から変更する


Linux から Active Direcoty (AD) に登録されているアカウントのパスワードを変更しようと思ったらこれが意外と大変でした。
今回開発しようとしているのは、パスワードを忘れたユーザーのパスワードを管理者が強制的に書き換えるというもの。
すぐ使えるサンプルは GitHub に上げておいたので、経緯に興味がない人は以下からどうぞ。
多少の AD や LDAP の知識があれば、プログラム中の変数を変えるだけで使えるはずです。
† ハマり所は盛りだくさん
こんなもの Linux のコマンドラインからおちゃのこさいさいだと高をくくっていたのですが、調べてみた限りでは管理者が強制的に AD アカウントのパスワードを書き換えるには LDAP や Kerberos を使わないといけないようなので、今回は Python と python-ldap/python-ldap を使って組むことにしました。
開発にあたっては、以下の先人のありがたい教訓を活用させていただきました。
- 技術的雑談-LDAP経由でActiveDirectoryにユーザなどを作る - Tsubasa's HomePage
- OSS EXPO: Active DirectoryのユーザーのパスワードをLDAPS経由で変更する
まず、パスワードが格納されているのは unicodePwd で LDAPでは一般的な userPassword ではありません。
しかもこの unicodePwd が曲者で、パスワードを更新するためには以下の条件を全て満たさなければなりません。
- サーバへの接続は LDAPS でないといけない*1
- bind に使うユーザーは Administrator でないといけない(Domain Users では自分のパスワードの更新も不可)
- アップデートにはダブルクオートで囲った平文を UTF-16LE でエンコードする必要がある
- アップデートに使うパスワードはAD のパスワードポリシーに適合していないといけない
- (unicodePwd は LDAP からはどうやっても読み出せない)
これらを1つずつクリアしてなんとか完成にたどり着きました。
できたプログラムの両自体は全然大したことないんですけどね。。。
- *1: 先日のActive Directory を LDAPS に対応させたのは今回のこの作業のための布石でした。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/10893
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
- 居酒屋 八(ひらく) (3)
- iPhone の設定を開くと「不正... (1)
- 退去通知もネットで可能な時代に (1)
- ケーブルカーのケーブルが切... (1)
- Visual Studio 2017/2019 で ... (1)
閲覧数が多いエントリ
1 . Solr-rubyで複数のドキュメントを一括Post(32916)
2 . Windows 10 で勝手にログアウトされないようにする(26760)
3 . Word で数式がグレーアウトされていて挿入できないときは(24650)
4 . リモートデスクトップで Alt + PrtSc と同じことをするには(20921)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(20388)
2 . Windows 10 で勝手にログアウトされないようにする(26760)
3 . Word で数式がグレーアウトされていて挿入できないときは(24650)
4 . リモートデスクトップで Alt + PrtSc と同じことをするには(20921)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(20388)
cles::blogについて
Referrers