< 前へ | 次へ >

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

このチュートリアルの認証モジュールの中で、operatormanager の 2 つのユーザーを作成しました。Java 認証・承認サービス (JAAS) 許可を 使用して、これらのユーザーに異なる許可を割り当てることができます。

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

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

grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction"
    principal javax.security.auth.x500.X500Principal
    "CN=manager,O=acme,OU=OGSample" {
    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 マップ許可を "CN=operator,O=acme,OU=OGSample" プリンシパルに付与します。 "CN=operator,O=acme,OU=OGSample" ユーザーは、Grid ObjectGrid インスタンス内の Map1 マップに対するマップ読み取り許可のみを保持します。
  • 2 番目の grant ステートメントは、all マップ許可を "CN=manager,O=acme,OU=OGSample" プリンシパルに付与します。 "CN=manager,O=acme,OU=OGSample" ユーザーは、Grid ObjectGrid インスタンス内の Map1 マップに対するすべての許可を保持します。

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

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

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

サンプル・アプリケーションを使用して、許可設定をテストできます。マネージャー・ユーザーは、従業員の表示や追加を含め、Map1 マップでの すべての許可をそのまま保持しています。オペレーター・ユーザーは、読み取り許可しか割り当てられていないため、従業員の 表示のみが可能です。
  1. コンテナー・サーバーを実行しているすべてのアプリケーション・サーバーを再始動します。 このチュートリアルの場合は、xs1 サーバーと xs2 サーバーを再始動します。
  2. EmployeeManagementWeb アプリケーションを開きます。 Web ブラウザーで、http://<host>:<port>/EmployeeManagermentWeb/management.jsp を開きます。
  3. 有効なユーザー名とパスワードを使用してアプリケーションにログインします。
  4. 従業員を表示してみます。Display an Employee」をクリックし、E メール・アドレス「authemp1@acme.com」を 検索します。ユーザーが見つからないというメッセージが表示されます。
  5. 従業員を追加します。Add an Employee」をクリックします。 E メール・アドレス authemp1@acme.com、名 Joe、および姓 Doe を追加し、「Submit」をクリックします。 従業員が追加されたというメッセージが表示されます。
  6. samples_home/security_extauth/client3.props ファイルを編集します。 credentialGeneratorProps プロパティーの値を manager manager1 から operator operator1 に変更します。 ファイルを編集すると、サーブレットが WebSphere eXtreme Scale サーバーへの 認証にユーザー名「operator」とパスワード「operator1」を使用するようになります。
  7. appCluster クラスターを再始動して、samples_home/security_extauth/client3.props ファイル内の 変更を反映します。
  8. 従業員を表示してみます。Display an Employee」をクリックし、E メール・アドレス「authemp1@acme.com」を 検索します。従業員が表示されます。
  9. 従業員を追加します。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)
    operator ユーザーには、 データを Map1 マップに挿入する許可がないため、このメッセージが表示されます。
バージョン 7.0.0.11 より前のバージョンの WebSphere Application Server で実行している場合、 コンテナー・サーバーで java.lang.StackOverflowError エラーが表示されることがあります。このエラーの原因は IBM Developer Kit の問題です。この問題は、WebSphere Application Server バージョン 7.0.0.11 以上に同梱されている IBM Developer Kit では修正済みです。

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

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

< 前へ | 次へ >