LDAP の RFC 上ではパスワードを生で保管せよということになっている

前回の日記で以下のように書きました。

ユーザエントリには posixAccount オブジェクトクラスを持たせて userPassword にパスワード文字列を設定します。一般的にパスワード文字列は生のまま保存せず、一方向ハッシュにして保存するというセキュリティ上の作法がよく知られていると思います。
OpenLDAP でも、この方式に対応しています

敢えて OpenLDAP に限定して記述したのは、RFC4519 2.41 では userPassword は暗号化されていないテキストを格納するように記述されているからです*1

Passwords are stored using an Octet String syntax and are not encrypted.

従って他の実装ではどうなっているかはよく解りません。

userPassword にハッシュを格納する実装は、experimental な RFC に記載されています。この内容は RFC4519 に真っ向から違反するもので、つまりハッシュを入れると RFC 違反な実装ということのようです(笑)。OpenLDAP が experimental な RFC の実装を取り入れたのは、確証はありませんがセキュリティのためであることは間違いないでしょう。

また、userPassword に生パスワードを入れても、それで実際に bind できてしまうのでご注意を。

このあたりの話題はOpenLDAP の FAQ に記述されています。詳しく知りたい方はこちらをご参照くださいませ。

*1:正確には、ハッシュは暗号ではないですけどw