Tomcat、Websphere、Glassfish などのサーブレット コンテナーによって提供される JAAS セキュリティを使用する必要があります。
デフォルトでは、これらのコンテナーは次の認証タイプをサポートしています。
HTTP 基本認証
HTTP 基本認証を指定するには、サーバーが Web クライアントからユーザー名とパスワードを要求し、指定されたレルムまたはデフォルト レルム内の許可されたユーザーのデータベースと比較して、ユーザー名とパスワードが有効であることを確認する必要があります。
認証メカニズムを指定しない場合、基本認証がデフォルトです。
基本認証を使用すると、次のアクションが発生します。
- クライアントは、保護されたリソースへのアクセスを要求します。
- Web サーバーは、ユーザー名とパスワードを要求するダイアログ ボックスを返します。
- クライアントは、ユーザー名とパスワードをサーバーに送信します。4.\サーバーは、指定されたレルムでユーザーを認証し、成功した場合は、要求されたリソースを返します。
次の図は、HTTP 基本認証を指定した場合の動作を示しています。
HTTP 基本認証 クライアントとサーバー間の HTTP 基本認証の 4 つのステップの図
フォームベースの認証
フォームベースの認証を使用すると、開発者は、HTTP ブラウザーがエンド ユーザーに表示するログイン画面とエラー ページをカスタマイズすることで、ログイン認証画面のルック アンド フィールを制御できます。フォームベース認証が宣言されると、次のアクションが発生します。
- クライアントは、保護されたリソースへのアクセスを要求します。
- クライアントが認証されていない場合、サーバーはクライアントをログイン ページにリダイレクトします。
- クライアントは、ログイン フォームをサーバーに送信します。
- サーバーはユーザーの認証を試みます。
- 認証が成功すると、認証されたユーザーのプリンシパルがチェックされ、リソースへのアクセスが承認されたロールに含まれていることが確認されます。ユーザーが許可されている場合、サーバーは保存されている URL パスを使用してクライアントをリソースにリダイレクトします。
- 認証に失敗すると、クライアントはエラー ページに転送またはリダイレクトされます。
次の図は、フォームベースの認証を指定した場合に何が起こるかを示しています。
フォームベースのログインを作成するときは、Cookie または SSL セッション情報を使用してセッションを維持してください。
認証が適切に行われるためには、ログイン フォームのアクションが常に j_security_check である必要があります。この制限は、ログイン フォームが対象のリソースに関係なく機能し、サーバーが送信フォームのアクション フィールドを指定する必要がないようにするために行われます。次のコード スニペットは、フォームを HTML ページにコーディングする方法を示しています。
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
ダイジェスト認証
基本認証と同様に、ダイジェスト認証は、ユーザー名とパスワードに基づいてユーザーを認証します。ただし、基本認証とは異なり、ダイジェスト認証はネットワーク経由でユーザー パスワードを送信しません。代わりに、クライアントはパスワードと追加データの一方向暗号化ハッシュを送信します。パスワードはネットワーク上で送信されませんが、ダイジェスト認証では、予想されるダイジェストを計算することによって受信したオーセンティケーターを検証できるように、クリアテキストのパスワードに相当するものを認証コンテナーで使用できる必要があります。
参考文献: