サーバーは、LDAP ベースまたはファイルベースのいずれかのディレクトリサービスを使用して、ダイジェスト認証を行うように設定できます。
ダイジェスト認証を使えば、ユーザー名とパスワードを平文として送信することなしに、ユーザー名とパスワードに基づく認証を行えます。ブラウザは MD5 アルゴリズムを使用して、ユーザーのパスワードと Web Server によって提供される情報の一部を使用するダイジェスト値を作成します。
サーバーが LDAP ベースのディレクトリサービスを使用してダイジェスト認証を行うとき、このダイジェスト値は、ダイジェスト認証プラグインを使用してサーバー側で計算され、クライアントによって提示されたダイジェスト値と比較されます。ダイジェスト値が一致した場合、ユーザーは認証されます。これが機能するには、ディレクトリサーバーが平文形式のユーザーのパスワードにアクセスできる必要があります。Sun Java System Directory Server にはリバーシブルパスワードプラグインが組み込まれています。このプラグインは、対称暗号化アルゴリズムを使用し、暗号化された形式にしてデータを格納し、あとで元の形式に復号化することができます。データへの鍵を持っているのは Directory Server だけです。
LDAP ベースのダイジェスト認証の場合、リバーシブルパスワードプラグインと、サーバーに組み込まれているダイジェスト認証専用のプラグインを有効にする必要があります。ダイジェスト認証を処理するように Web サーバーを構成するには、dbswitch.conf 内のデータベース定義の digestauth プロパティーを設定します。
ACL 方式を指定しない場合、認証が必要であればダイジェスト認証または基本認証のいずれかが使用され、認証が必要ない場合は基本認証が使用されます。これが推奨される方法です。
表 7–1 ダイジェスト認証要求の生成
ACL 方式 |
認証データベースでダイジェスト認証がサポートされている |
認証データベースでダイジェスト認証がサポートされていない |
---|---|---|
「標準」 指定されていない |
ダイジェストと基本 |
基本 |
「基本」 |
基本 |
基本 |
「ダイジェスト」 |
ダイジェスト |
エラー |
method = digest を含む ACL を処理する場合、サーバーは次のようにして認証を試みます。
Authorization 要求ヘッダーをチェックします。見つからない場合は、ダイジェスト要求に対して 401 の応答が生成され、プロセスが停止します。
認証のタイプを確認します。認証のタイプがダイジェストの場合、サーバーは次のことを実行します。
ノンスをチェックします。このサーバーによって生成された、有効で新しい nonce がない場合は、401 の応答が生成されてプロセスが停止します。期限切れの場合は、stale=true で 401 応答が生成され、処理が停止します。
ノンスの有効期間を構成するには、終了タイムアウト magnus.conf ファイル内のパラメータ DigestStaleTimeout の値を変更します。このファイルは server_root/https-server_name /config/ にあります。 この値を設定するには、次の行を magnus.conf に追加します。
ここで seconds は、nonce の有効期限 (秒) です。指定されている秒数が経過すると、nonce の有効期限は切れ、ユーザーからの新しい認証が必要になります。
レルムをチェックします。これが一致しない場合は、401 応答が生成され、処理が停止します。
認証ディレクトリが LDAP ベースの場合は LDAP ディレクトリにユーザーが存在するかどうかを確認します。認証ディレクトリがファイルベースの場合はファイルデータベースにユーザーが存在するかどうかを確認します。見つからない場合は、401 応答が生成され、処理が停止します。
ディレクトリサーバーまたはファイルデータベースから要求ダイジェスト値を取得し、クライアントの要求ダイジェストと一致するかどうかをチェックします。一致しない場合は、401 応答が生成され、処理が停止します。
Authorization-Info ヘッダーを構築し、サーバーヘッダーに挿入します。