レルム

レルムとは、Webアプリケーションが認識するユーザのデータベースです。 そのデータベースは、ユーザIDとパスワードの組み合わせでユーザを一意に特定し、 そのユーザに付与されているロールの一覧を取得するのに使うことが出来ます。

JavaEEではレルムを使った認証を行うことで、次のような事が可能になります。

URL単位でのアクセス制御

web.xmlで指定することにより、任意のURLに対してアクセスに必要なロールを設定し、保護することができます。

ユーザが保護されたURLにアクセスしたとき、認証(ログイン)の状態とロールによって以下のように動作します。

  • ユーザが認証済みで、必要なロールを付与されていれば、そのURLへのアクセスを許可します。
  • ユーザが認証済みで、必要なロールを付与されていなければ、エラーページを表示します。
  • ユーザが認証していない場合、処理を中断して、ユーザにログイン処理を要求します。

認証方式

独自にプログラムすること無しに、以下のような認証方式を利用することが出来ます。

  • 基本認証
  • フォーム認証
  • クライアント証明書認証

データソース

レルムの保存場所として、以下のようなを選択できます。 (サーブレットコンテナによって、選択肢の種類や設定方法が異なります)

  • テキストファイル
  • JDBC経由で接続したRDB
  • Webアプリケーションと共用のデータソース
  • JNDI

ダイジェストパスワード

平文のパスワードを保存せず、パスワードのダイジェスト値だけを保存しておき認証に使用することが出来ます。 万が一、データベースの中身が漏洩しても平文のパスワードを容易に特定することは出来ません。