< 前へ | 次へ >

レッスン 4.2: ユーザー・ベースの許可を使用可能にする

このチュートリアルの認証モジュールで、operator1 および admin1 という 2 人のユーザーを作成しました。Java 認証・承認サービス (JAAS) 許可を使用して、これらのユーザーにさまざまな許可を割り当てることができます。

ユーザー・プリンシパルを使用した、Java 認証・承認サービス (JAAS) 許可ポリシーの定義

前に作成したユーザーに、許可を割り当てることができます。operator1 ユーザーに、すべてのマップに対する読み取り許可のみを割り当てます。admin1 ユーザーに、すべての許可を割り当てます。JAAS 許可ポリシー・ファイルを使用して、プリンシパルに許可を付与します。
JAAS 許可ファイルを編集します。 xsAuth2.policy ファイルは、samples_home/security ディレクトリーにあります。
grant codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction
Principal com.ibm.ws.security.common.auth.WSPrincipalImpl "defaultWIMFileBasedRealm/operator1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "read";
};

grant codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction
Principal com.ibm.ws.security.common.auth.WSPrincipalImpl "defaultWIMFileBasedRealm/admin1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "all";
};
このファイルにある http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction コードベースは、ObjectGrid 用に 特別に予約された URL です。 プリンシパルに付与されているすべての ObjectGrid 許可では、この特別なコードベースを使用します。このファイルの中で、次の許可が割り当てられます。
  • 最初の grant ステートメントは、read マップ許可を operator1 プリンシパルに付与します。 operator1 ユーザーは、ObjectGrid インスタンスの中の Map1 マップに対するマップ読み取り許可のみを持ちます。
  • 2 番目の grant ステートメントは、all マップ許可を admin1 プリンシパルに付与します。 admin1 は、ObjectGrid インスタンスの中の Map1 マップに対するすべての許可を持ちます。
  • プリンシパル名は defaultWIMFileBasedRealm/operator1 で、Operator1 ではありません。統合リポジトリーがユーザー・アカウント・レジストリーとして使用されるときに、WebSphere Application Server は自動的にレルム名をプリンシパル名に追加します。必要であれば、この値を調整します。

JVM プロパティーを使用した JAAS 許可ポリシー・ファイルの設定

次のステップを使用して、xsCluster クラスター内の xs1 サーバーと xs2 サーバーの JVM プロパティーを設定します。このチュートリアルで使用するサンプル・トポロジーとは異なる トポロジーを使用する場合は、すべてのコンテナー・サーバーにファイルを設定してください。
  1. 管理コンソールで、「サーバー」 > 「アプリケーション・サーバー」 > server_name > 「Java およびプロセス管理」 > 「プロセス定義」 > 「Java 仮想マシン」をクリックします。
  2. 次の汎用 JVM 引数を追加します。
    -Djava.security.auth.policy=samples_home/security/xsAuth2.policy
  3. OK」をクリックして、変更を保存します。

サンプル・アプリケーションを実行して許可をテストする

サンプル・アプリケーションを使用して、許可設定をテストすることができます。アドミニストレーター・ユーザーは、従業員の表示および追加も含めて、引き続き、Map1 マップ内のすべての許可を持ちます。オペレーター・ユーザーは、読み取り許可しか割り当てられていないため、従業員の 表示のみが可能です。
  1. コンテナー・サーバーを実行しているすべてのアプリケーション・サーバーを再始動します。
  2. EmployeeManagementWeb アプリケーションを開きます。 Web ブラウザーで、http://<host>:<port>/EmployeeManagermentWeb/management.jsp を開きます。
  3. アドミニストレーター・ユーザーとしてアプリケーションにログインします。 ユーザー名に admin1、パスワードに admin1 を使用します。
  4. 従業員を表示してみます。Display an Employee」をクリックし、E メール・アドレス「authemp1@acme.com」を 検索します。ユーザーが見つからないというメッセージが表示されます。
  5. 従業員を追加します。Add an Employee」をクリックします。 E メール・アドレス「authemp1@acme.com」、名「Joe」、および姓「Doe」を追加し、「Submit」をクリックします。 従業員が追加されたというメッセージが表示されます。
  6. オペレーター・ユーザーとしてログインします。 2 つ目の Web ブラウザー・ウィンドウを開いて、http://<host>:<port>/EmployeeManagermentWeb/management.jsp を開きます。 ユーザー名に operator1、パスワードに operator1 を使用します。
  7. 従業員を表示してみます。Display an Employee」をクリックし、E メール・アドレス「authemp1@acme.com」を 検索します。従業員が表示されます。
  8. 従業員を追加します。Add an Employee」をクリックします。 E メール・アドレス「authemp2@acme.com」、名「Joe」、および姓「Doe」を追加し、「Submit」をクリックします。 次のメッセージが表示されます。
    An exception occurs when Add the employee. See below for detailed exception messages.
    次の例外が例外チェーンに入っています。
    java.security.AccessControlException: Access denied 
    (com.ibm.websphere.objectgrid.security.MapPermission Grid.Map1 insert)
    このメッセージは、operator1 ユーザーが Map1 マップへのデータ挿入を許可されていないために表示されます。
バージョン 7.0.0.11 より前のバージョンの WebSphere Application Server で実行している場合、 コンテナー・サーバーで java.lang.StackOverflowError エラーが表示されることがあります。このエラーの原因は IBM Developer Kit の問題です。この問題は、WebSphere Application Server バージョン 7.0.0.11 以上に同梱されている IBM Developer Kit では修正済みです。

レッスンのチェックポイント

このレッスンでは、特定のユーザーに許可を割り当てて、許可を構成しました。

< 前へ | 次へ >