第6章 ファイルシステムを使用するためのセキュリティードメインの設定
セキュリティードメインは、ログインモジュールを使用して認証および承認のアイデンティティーストアとしてファイルシステムを使用するように設定することもできます。
6.1. UsersRoles ログインモジュール
UsersRoles ログインモジュールは、Java プロパティーファイルからロードされる複数のユーザーおよびユーザーロールをサポートする簡単なログインモジュールです。このログインモジュールの主な目的は、アプリケーションとともにデプロイされたプロパティーファイルを使用して複数のユーザーおよびロールのセキュリティー設定を簡単にテストすることです。デフォルトの username-to-password マッピングファイル名は users.properties
で、デフォルトの username-to-roles マッピングファイル名は roles.properties
です。
このログインモジュールは、パスワードスタッキング、パスワードハッシュ、および認証されていないアイデンティティーをサポートします。
プロパティーファイルは、initialize メソッドスレッドコンテキストローダーを使用して初期化中にロードされます。つまり、これらのファイルは Jakarta EE デプロイメントのクラスパス (WAR アーカイブの WEB-INF/classes
フォルダーなど) またはサーバークラスパスの任意のディレクトリーに配置できます。
オプション | Type | デフォルト | 説明 |
---|---|---|---|
usersProperties | ファイルまたはリソースへのパス。 | users.properties | ユーザー/パスワード間のマッピングが含まれるファイルまたはリソースです。ファイルの形式は username=password です。 |
rolesProperties | ファイルまたはリソースへのパス。 | roles.properties | ユーザー/ ロール間のマッピングが含まれるファイルまたはリソースです。ファイルの形式は username=role1,role2,role3 です。 |
password-stacking | useFirstPass または false | false | useFirstPass の値は、このログインモジュールが最初に LoginContext に格納されている情報を調べて ID を探す必要があることを示します。このオプションは、このログインモジュールと他のログインモジュールをスタックする際に使用できます。 |
hashAlgorithm | パスワードハッシュアルゴリズムを表す文字列。 | none | パスワードをハッシュするために使用される java.security.MessageDigest アルゴリズムの名前。デフォルトはないため、ハッシュを有効にするには、このオプションを明示的に設定する必要があります。hashAlgorithm が指定されている場合、CallbackHandler から取得されたクリアテキストパスワードは、inputPassword 引数としてUsernamePasswordLoginModule.validatePassword に渡される前にハッシュされます。users.properties ファイルに保存されているパスワードは、同様にハッシュ化する必要があります。 |
hashEncoding | base64 または hex | base64 | hashAlgorithm も設定されている場合、ハッシュ化されたパスワードの文字列形式。 |
hashCharset | string | コンテナーのランタイム環境に設定されるデフォルトのエンコーディング | クリアテキストのパスワードをバイトアレイに変換するために使用されるエンコーディング。 |
unauthenticatedIdentity | プリンシパル名 | none | 認証情報を含まないリクエストに割り当てられるプリンシパル名を定義します。これを使用すると、保護されていないサーブレットは特定ロールを必要としない EJB でメソッドを呼び出すことができます。このようなプリンシパルには関連したロールがなく、セキュアでない EJB や、チェックされていないパーミッション制約と関連する EJB メソッドのみにアクセスできます。 |
6.1.1. UsersRoles ログインモジュールを使用するようにセキュリティードメインを設定
以下の例では、以下のファイルが作成され、アプリケーションのクラスパスで利用できることを前提としています。
- sampleapp-users.properties
- sampleapp-roles.properties
UserRoles ログインモジュールを追加する CLI コマンド
/subsystem=security/security-domain=sampleapp:add
/subsystem=security/security-domain=sampleapp/authentication=classic:add
/subsystem=security/security-domain=sampleapp/authentication=classic/login-module=UsersRoles:add( \ code=UsersRoles, \ flag=required, \ module-options=[ \ ("usersProperties"=>"sampleapp-users.properties"), \ ("rolesProperties"=>"sampleapp-roles.properties") \ ])
reload
結果の XML
<security-domain name="sampleapp"> <authentication> <login-module code="UsersRoles" flag="required"> <module-option name="usersProperties" value="sampleapp-users.properties"/> <module-option name="rolesProperties" value="sampleapp-roles.properties"/> </login-module> </authentication> </security-domain>