この節では、平文パスワードを取得する 2 つの方法について説明します。平文パスワードは、Windows ソースと Directory Server ソースとの間でパスワードの変更を伝播させるために必要です。
Windows NT コネクタは、Sun Java System Directory Server にパスワードの更新を伝播させるために平文パスワードを取得する必要があります。ただし、Windows ディレクトリから平文パスワードを抽出することはできません。パスワードがディレクトリに格納される時点で、すでにパスワードは暗号化されています。
Windows NT では、ディレクトリに永続的に格納される前に平文パスワードをコンポーネントが収集できるようにする パスワードフィルタ DLL インタフェースを提供します。
Active Directory では、Windows NT と同じパスワードフィルタをサポートしていますが、Window NT で使用されるプライマリドメインコントローラではなく各ドメインコントローラにパスワードフィルタ DLL をインストールしてください。これは、インストールでの過大な負担となる可能性があるため、Identity Synchronization for Windows ではオンデマンドパスワード同期と呼ばれる別の手法を使用して、パスワードの変更を Active Directory から Directory Server に同期します。
オンデマンドパスワード同期では、ユーザーが Windows 2000/2003 でパスワードを変更したあとでログインを試みたときに Directory Server 上で新しいパスワードの値を取得するための方法が提供されます。
また、パスワードフィルタ DLL を使用せずに Active Directory 上でパスワードを同期することもできます。
オンデマンドパスワード同期のプロセスは次のとおりです。
ユーザーは、Windows を実行しているマシンで Ctrl-Alt-Del を押し、自分のパスワードを変更します。新しいパスワードが Active Directory に格納されます。
Active Directory コネクタは、スケジュールされた間隔でシステムをポーリングします。
コネクタは、USNchanged (Update Sequence Number) および PwdLastSet 属性に対する変更に基づいてパスワードの変更を検出すると、パスワードの変更に関するメッセージを Message Queue に発行します。メッセージは、SSL 暗号化チャネル上を転送されます。
ディレクトリサーバーコネクタは、SSL を介して Message Queue からパスワードの変更メッセージを受信します。
ディレクトリサーバーコネクタは、ユーザーエントリの dspswvalidate 属性を true に設定します。これにより、古いパスワードは無効になり、パスワードの変更がディレクトリサーバープラグインに通知されます。
ユーザーがログインを試みると、Sun Java System ディレクトリサーバープラグインは、Directory Server に対して認証を求める LDAP アプリケーション (Portal Server など) を使用して、Directory Server エントリのパスワードの値が無効であることを検出します。
ディレクトリサーバープラグインは、Active Directory で対応するユーザーを検索します。プラグインは、ユーザーが見つかると、ユーザーが Directory Server へのログインを試みたときに入力されたパスワードを使って、Active Directory へのバインドを試みます。
オンデマンドパスワード同期では、Directory Server に対してアプリケーションで SASL Digest-MD5 などのより複雑な認証メカニズムを使用する代わりに、単純認証を使用する必要があります。
Active Directory に対するバインドに成功すると、ディレクトリサーバープラグインは、パスワードを設定し、Directory Server 上のユーザーエントリから無効なパスワードフラグを取り除いて、ユーザーがログインできるようにします。
ユーザー認証に失敗すると、ユーザーエントリのパスワードは Directory Server に残り、Directory Server および Active Directory 上のパスワードは、ユーザーが有効なパスワードでログインするまで一致しません。有効なパスワードは、Active Directory に対して認証されたパスワードです。