Amazon ELB と Digest 認証の組み合わせがうまくいかない


Amazon のロードバランサー ELB (Elastic Load Balancing) 環境の下で、Web サーバに Digest 認証を設定すると、認証できなかったり、異様に時間がかかるなど、上手くいかないケースがあります。

実際に発生したのは ELB の下に Web サーバが複数ある構成です。Web サーバの Apache にはそれぞれ同じ Digest 認証を設定しています。

このとき、各Webサーバ の Apache エラーログには、以下のようなエラーが大量に出ていました。

Digest 認証は最初は401エラーを返し、ブラウザはそのときに返されるランダムな文字列(nonce) を使って再度アクセスして認証を試みます。このときに nonce を発行した web サーバとは別の webサーバに接続してエラーとなるという現象を繰り返していたようです。たまたま同じサーバに連続アクセスしたときだけ認証できます。

これは、ELB の維持設定がアプリケーションの cookie を使って振分をするようになっているため、ログイン前の状態ではサーバへの振り分け用 Cookie が発行されていないために発生していたと思われます。

ELB の Cookie 設定

対処方法としては、ELB の維持設定を「ロードバランサーによって生成された Cookie」に変更すればよいと思います。

ELB の Cookie 設定の変更

上記で解決しない場合や、ロードバランサーのCookie を使用できないケースでは、セキュリティの強度は落ちますが、Digest 認証ではなく Basic 認証を使用することでも回避可能です。

SSL を併用しているなど要件的に Basic 認証でも問題が無い場合はそのような選択肢もあり得ると思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • キュア子の紹介

人気記事ランキング