Apache(SVN) + LDAP で "Invalid credentials"

社内でSubversionのホスティングサービスを運用していたりするのですが、そのSubversionの認証には、社内のディレクトリサービスであるActiveDirectory(Windowsドメイン)に委譲する形で行っています。

構成としては、Apache2.0とmod_auth_ldapを組み合わせる形で実現しています。

で、先日、ユーザから「認証が通らない」といった問合せがあり、調べてみるとApacheには以下のエラーログが残されていた。

# ちなみに、ActiveDirectoryは別部署で運用されていたりするので、調査がなかなか面倒で。。。

[Wed Mar 26 11:18:17 2008] [warn] [client 192.168.xxx.xxx] [5566] auth_ldap authenticate: user USERNAME authentication failed; URI /path/to/repository [ldap_simple_bind_s() to check user credentials failed][Invalid credentials]


どうやら、このログは認証(ユーザIDとパスワードの突合せ)に失敗した時に出るログなのだが、はっきりとした確証がないので、アカウント期限切れやアカウントロックについても疑ってみることにした。

色々やっているうちに、2個ほど覚えたのでメモ。

ActiveDirectory: BadPwdCount

ユーザの属性値(attribute)に、「BadPwdCount」と呼ばれるものがあった。
これは、ユーザがドメインへの認証時に正しくパスワードを入力した回数のことを示す。
で、この値は、ドメインコントローラ間でレプリケーションされず、各ドメインコントローラで個別に保持される、と。

ドメインユーザのアカウントロック状況を調べるツール(LockoutStatus.exe)

ドメインを構成する全てのドメインコントローラに対して、アカウントロックに関連するユーザの状態を調べてくれるツール。なかなか便利です。

https://farm3.static.flickr.com/2331/2366724128_89ccc3c003_o.png
※画像はクリックすると大きく表示されます。

Download details: Account Lockout Status (LockoutStatus.exe)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=D1A5ED1D-CD55-4829-A189-99515b0E90F7#Overview

LockoutStatus.exeですが、↑のリンク先からダウンロードできます。
通常は、"Windows Server 2003 Resource Kit Tools"に含まれている模様。私は、Windows2000(SP4)にインストールしてみましたが普通に使えました。

結局

ユーザの方とやりとりするうちに、"パスワードの入力間違え"を繰り返していただけ、と発覚。NumLockしたままだったって。。。遠隔地でのリモート対応とは難しいものです。

ま、最初の予想が当たってたわけで、良かったのだが、色々調べてみただけに、なんだか脱力。