BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic リソースのセキュリティ

 Previous Next Contents Index PDF で侮ヲ  

例 : エンタープライズ JavaBean (EJB) リソースの保護

この例では、ejb20_basic_statelessSession JAR 内のすべて EJB へのアクセスを、作成したグローバルセキュリティ ロールが付与されているユーザに制限します。次に、この EJB JAR に含まれる statelessSession EJB へのアクセスを別のユーザに制限します。最後に、特定の EJB メソッド (create() メソッドと buy() メソッド) に対するセキュリティをさらに強化します。

注意: この例に進む前に、URL リソースおよび EJB リソースを保護する方法URL リソースおよび EJB リソースを保護するための前提条件、およびセキュリティ ロールのタイプ : グローバル ロールとスコープ ロールに目を通しておいてください。

WebLogic Server Administration Console を使用してエンタープライズ JavaBean (EJB) を保護するには、次の手順に従います。

 


手順 1 : サーバと前提設定を指定する

  1. fullyDelegateAuthorization フラグの変更方法の指示に従って、fullyDelegateAuthorization フラグを true に設定します。

    注意: この設定の意味 : すべての URL (Web) および EJB リソースに対して WebLogic Security サービスによるセキュリティ チェックを実行するよう WebLogic Server に指示します。 詳細については、fullyDelegateAuthorization フラグについてを参照してください。

  2. Windows の [スタート] メニューから、[プログラム|BEA WebLogic Platform 7.0|WebLogic Server 7.0|Server Tour and Examples|Launch Examples Server] を選択して examplesServer というサーバを起動します。

    examplesServer が起動するとコンソールにfullyDelegateAuthorization フラグが表示され、ブラウザに [BEA WebLogic Server Out-of-the-Box Examples Index Page] が表示されます。

  3. [BEA WebLogic Server Out-of-the-Box Examples Index Page] の上部にある [ Administration Console] リンクをクリックします。

  4. [サインイン] ボタンをクリックして examplesServer の Administration Console にサインインします。

  5. Administration Console の左側のナビゲーション ツリーを使用して、[セキュリティ|レルム] を展開します。

  6. myrealm セキュリティ レルムをクリックします。

  7. [一般] タブで、[デプロイメント記述子内のセキュリティ データを無視] チェック ボックスをクリックします(つまり、ボックスにチェック マークを入れます)。

    注意: この設定の意味 : Administration Console を使用して、Web アプリケーションおよび EJB リソースのセキュリティを設定するように WebLogic Server に指示します。 詳細については、[デプロイメント記述子内のセキュリティ データを無視] チェック ボックスについてを参照してください。

  8. [適用] をクリックして変更を保存します。

 


手順 2 : グループを作成する

  1. Administration Console の左側のナビゲーション ツリーを使用して、[セキュリティ|レルム] を展開します。

  2. myrealm セキュリティ レルムを展開します。

  3. [グループ] をクリックします。

    [グループを選択] ページには、WebLogic 認証プロバイダのデータベースで現在定義されているすべてのグループが表示されます。

  4. [新しいグループのコンフィグレーション] リンクをクリックして、[グループの作成] ページを表示します。

  5. [一般] タブの [名前] フィールドに Testers と入力します。

  6. 必要な場合は、[記述] フィールドにグループの説明を入力します。

  7. [適用] をクリックして変更を保存します。

 


手順 3 : ユーザを作成する

  1. ナビゲーション ツリーを使用して [ユーザ] をクリックします。

    [ユーザを選択] ページには、WebLogic 認証プロバイダのデータベースで現在定義されているすべてのユーザが表示されます。

  2. [新しいユーザのコンフィグレーション] リンクをクリックして、[ユーザの作成] ページを表示します。

  3. [一般] タブの [名前] フィールドに Stephanie と入力します。

  4. 必要な場合は、[記述] フィールドにユーザの説明を入力します。

  5. [パスワード] および [パスワードの確認] フィールドに ejbexample と入力します。

  6. [適用] をクリックして変更を保存します。

  7. 手順 2 から 6 を繰り返して Jen というユーザを作成します。

  8. ナビゲーション ツリーを使用して [ユーザ] をクリックし、ユーザ Stephanie および Jen が追加されていることを確認します。

    [ユーザを選択] ページを表示すると、Stephanie と Jen が WebLogic 認証プロバイダのデータベースに追加されていることがわかります。

 


手順 4 : ユーザをグループに追加する

  1. [ユーザを選択] ページで、ユーザ名 Stephanie のリンクをクリックします。

  2. [グループ] タブをクリックします。

  3. [指定できるグループ] リスト ボックスで、Testers グループを強調表示します。

  4. 強調表示された右矢印をクリックして、[指定できるグループ] リスト ボックスから [現在のグループ] リスト ボックスに Testers グループを移動します。

  5. [適用] をクリックして変更を保存します。

注意: JenTesters グループに追加しないでください。

 


手順 5 : グローバル ロールを作成する

  1. ナビゲーション ツリーを使用して [ロール] をクリックします。

    [ロールの選択] ページには、WebLogic ロール マッピング プロバイダのデータベースで現在定義されているすべてのグローバル ロールが表示されます。

  2. [新しい Role のコンフィグレーション] リンクをクリックして、[ロールを作成] ページを表示します。

  3. [一般] タブの [名前] フィールドに QA と入力します。

  4. [適用] をクリックして変更を保存します。

 


手順 6 : グループにグローバル ロールを付与する

  1. [条件] タブをクリックします。

  2. [ロール条件] リスト ボックスで、[呼び出し側をメンバとするグループは] を強調表示します。

  3. [追加] をクリックして [グループ] ウィンドウを表示します。

  4. [グループ名の入力] フィールドに Testers と入力します。

  5. [追加] をクリックしてから [OK] をクリックします。

    [グループ] ウィンドウが閉じます。[ロール文] リスト ボックスに次のように表示されます。

    呼び出し側をメンバとするグループは

    Testers

  6. [適用] をクリックして変更を保存します。

 


手順 7 : グローバル ロールを使用して statelessSession EJB JAR のセキュリティ ポリシーを作成する

  1. ナビゲーション ツリーを使用して、[デプロイメント|EJB] を展開します。

  2. ejb20_basic_statelessSession.jar を右クリックします。

  3. メニューから [ポリシーを定義] オプションを選択します。

    注意: このオプションの意味 : EJB JAR レベルでセキュリティ ポリシーを作成します。JAR 内のすべての EJB とその EJB 内のすべてのメソッドが含まれます。

  4. [ポリシー条件] リスト ボックスで、[呼び出し側に許可するロールは] を強調表示します。

  5. [追加] をクリックして [ロール] ウィンドウを表示します。

  6. [ロール名の入力] フィールドに QA と入力します。

  7. [追加] をクリックしてから [OK] をクリックします。

    [ロール] ウィンドウが閉じます。[ポリシー文] リスト ボックスに次のように表示されます。

    呼び出し側に許可するロールは

    QA

    注意: ejb20_basic_statelessSession.jar のセキュリティ ポリシーを定義すると、EJB リソース タイプ対して既に定義されているセキュリティ ポリシーがオーバライドされることに注意してください。具体的には、以下の継承されたポリシー文がオーバライドされます。

    呼び出し側をメンバとするグループは

    Everyone

    上記は [継承されたポリシー文] リスト ボックスに表示されます。

    この [呼び出し側をメンバとするグループは] ポリシー条件は、EJB リソースのデフォルト セキュリティ ポリシーの一部です。 詳細については、デフォルト セキュリティ ポリシーを参照してください。

  8. [適用] をクリックして変更を保存します。

 


手順 8 : クライアント アプリケーションから EJB へのアクセスを試行する

注意: この節で説明する手順はすべて、Windows 環境での作業を想定しています。

  1. DOS シェルを開いて、cd WL_HOME¥samples¥server¥config¥examples と入力します。WL_HOME は、WebLogic Platform の最上位のインストール ディレクトリです。

  2. setExamplesEnv.cmd と入力して、環境を設定します。

  3. cd ..¥..¥src¥examples¥security¥jaas と入力します。

  4. ant と入力してサンプルをビルドします。

  5. sample_jaas.config ファイルを WL_HOME¥samples¥server¥src¥examples¥security¥jaas ディレクトリから JAVA_HOME¥jre¥lib¥security ディレクトリに手動でコピーします。JAVA_HOME は Java SDK がインストールされているディレクトリです。

  6. java.security ファイル (JAVA_HOME¥jre¥lib¥security に格納) を編集して、ファイルの最後に次の行を (すべて 1 行で) 追加します。

    login.config.url.1=file:${java.home}/lib/security/
    sample_jaas.config

  7. examplesServer を再起動します。 詳細については、『管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。

  8. WL_HOME¥samples¥server¥src¥examples¥security¥jaas ディレクトリで、build.xml ファイルを次のように編集します。

    1. ファイルの最後までスクロールして <target name="run"> という行を見つけます (リスト7-1 に太字で示されています)。

    2. <arg line> 要素で、ユーザ名とパスワード (現在は weblogic weblogic) を Stephanie ejbexample に変更します (リスト7-1 に太字で示されています)。

    3. build.xml ファイルを保存します。

コード リスト 7-1 build.xml ファイルの該当する部分

<!-- Run the example -->
<target name="run" >
<java classname="examples.security.jaas.SampleClient"
fork="yes" failonerror="true">
<arg line="t3://localhost:${PORT}
weblogic weblogic"/>
<classpath>
<pathelement path="${CLASSPATH};${CLIENT_CLASSES}/
ejb20_basic_statelessSession_client.jar;
${CLIENT_CLASSES}/utils_common.jar"/>
</classpath>
</java>
</target>

  1. 同じディレクトリ (WL_HOME¥samples¥server¥src¥examples¥security¥
    jaas
    ) で、ant run と入力します。

    以下のような出力が表示されます。

    Buildfile: build.xml

    run:
    [java] username: Stephanie
    [java] password: **********
    [java] URL: t3://localhost:7001
    [java] Creating a trader
    [java] Buying 100 shares of BEAS.
    [java] Buying 200 shares of MSFT.
    [java] Buying 300 shares of AMZN.
    [java] Buying 400 shares of HWP.
    [java] Selling 100 shares of BEAS.
    [java] Selling 200 shares of MSFT.
    [java] Selling 300 shares of AMZN.
    [java] Selling 400 shares of HWP.
    [java] Removing the trader

    BUILD SUCCESSFUL

    Total time: 5 seconds

    セキュリティ ポリシーで保護した ejb20_basic_statelessSession.jar に格納されている EJB をクライアント アプリケーションが呼び出したため、このような結果になります。

  2. build.xml ファイルのユーザ名とパスワードとして Jen ejbexample を使用し、手順 8 と 9 を繰り返します。

    以下で始まる出力が表示されます。

    run:
    [java] username: Jen
    [java] password: **********
    [java] URL: t3://localhost:7001
    [java] Creating a trader
    [java] java.rmi.AccessException: Security violation: User Jen has insufficient permission to access method; nested exception is:
    [java] java.lang.SecurityException: Security violation: User Jen has insufficient permission to access method

    セキュリティ ポリシーで保護した ejb20_basic_statelessSession.jar に格納されている EJB をクライアント アプリケーションが呼び出したため、このような結果になります。

 


手順 9 : statelessSession EJB へのアクセスを制限する

  1. Administration Console の左側のナビゲーション ツリーを使用して、ejb20_basic_statelessSession.jar を右クリックします。

  2. メニューから [個別の Bean のポリシーとロールを定義] オプションを選択します。

    JAR ファイル内のすべての EJB (この場合は statelessSession EJB のみ) を示すテーブルが表示されます。

    注意: このオプションの意味 : EJB レベル (セキュリティ ポリシーは EJB 内のすべてのメソッドに適用される)、または EJB 内の特定のメソッド レベルでセキュリティ ポリシーを作成できます。

  3. statelessSession EJB の [ポリシーを定義] リンクをクリックします。

  4. [ポリシー条件] リスト ボックスで、[呼び出し側のユーザ名は] を強調表示します。

    注意: [Methods] ドロップダウン メニューに表示される値は変更しないでください (ALL と表示されています)。

  5. [追加] をクリックして [ユーザ] ウィンドウを表示します。

  6. [ユーザ名の入力] フィールドに Jen と入力します。

  7. [追加] をクリックしてから [OK] をクリックします。

    [ユーザ] ウィンドウが閉じます。[ポリシー文] リスト ボックスに次のように表示されます。

    呼び出し側のユーザ名は

    Jen

    注意: statelessSession EJB に対するこのセキュリティ ポリシーを定義すると、手順 7 : グローバル ロールを使用して statelessSession EJB JAR のセキュリティ ポリシーを作成する.で EJB JAR に対して定義したセキュリティ ポリシーがオーバライドされることに注意してください。具体的には、以下の継承されたポリシー文がオーバライドされます。

    呼び出し側に許可するロールは

    QA

    上記は [継承されたポリシー文] リスト ボックスに表示されます。

  8. [適用] をクリックして変更を保存します。

  9. 手順 8 : クライアント アプリケーションから EJB へのアクセスを試行するの 8 から 10 を繰り返します。

    クライアント アプリケーションからの出力は、前述の場合と反対になります。 つまり、StephaniestatelessSession EJB へのアクセスを拒否され、Jen はアクセスを許可されます。

    セキュリティ ポリシーで保護した EJB をクライアント アプリケーションが呼び出したため、このような結果になります。

 


手順 10 : create() および buy() EJB メソッドへのアクセスを制限する

  1. Administration Console の左側のナビゲーション ツリーを使用して、ejb20_basic_statelessSession.jar を右クリックします。

  2. メニューから [個別の Bean のポリシーとロールを定義] オプションを選択します。

    JAR ファイル内のすべての EJB (この場合は statelessSession EJB のみ) を示すテーブルが表示されます。

    注意: このオプションの意味 : EJB レベル (セキュリティ ポリシーは EJB 内のすべてのメソッドに適用される)、または EJB 内の特定のメソッド レベルでセキュリティ ポリシーを作成できます。

  3. statelessSession EJB の [ポリシーを定義] リンクをクリックします。

  4. [Methods] ドロップダウン メニューを使用して、create() - HOME メソッドを選択します。

  5. [ポリシー条件] リスト ボックスで、[呼び出し側をメンバとするグループは] を強調表示します。

  6. [追加] をクリックして [グループ] ウィンドウを表示します。

  7. [グループ名の入力] フィールドに Testers と入力します。

  8. [追加] をクリックしてから [OK] をクリックします。

    [グループ] ウィンドウが閉じます。[ポリシー文] リスト ボックスに次のように表示されます。

    呼び出し側をメンバとするグループは

    Testers

    注意: create() メソッドに対するこのセキュリティ ポリシーを定義すると、手順 9 : statelessSession EJB へのアクセスを制限する.statelessSession EJB に対して定義したセキュリティ ポリシーがオーバライドされることに注意してください。具体的には、以下の継承されたポリシー文がオーバライドされます。

    呼び出し側のユーザ名は

    Jen

    これは、[Methods] ドロップダウン メニューから ALL を選択すると [ポリシー文] リスト ボックスに表示されます。

  9. [適用] をクリックして変更を保存します。

  10. 同じ [ポリシー文] を使用して手順 4 から 9 を繰り返し、buy(java.lang.String, int) - REMOTE メソッドを保護します。

  11. 手順 8 : クライアント アプリケーションから EJB へのアクセスを試行するの 8 から 10 を繰り返します。

    ユーザ Stephanie の場合と Jen の場合では、クライアント アプリケーションの出力が異なるメソッドで失敗します。 sell() メソッドはクライアント アプリケーションで create() および buy() メソッドの後になるので、ユーザ Stephanie はこのメソッドでアクセスを拒否されます (サンプル出力については「リスト7-2」を参照)。 ユーザ Jencreate() メソッドでアクセスを拒否されます (サンプル出力については「リスト7-3」を参照)。

コード リスト 7-2 ユーザ Stephanie の出力 : sell() メソッドでアクセス拒否

Buildfile: build.xml
run:
[java] username: Stephanie
[java] password: **********
[java] URL: t3://localhost:7001
[java] Creating a trader
[java] Buying 100 shares of BEAS.
[java] Buying 200 shares of MSFT.
[java] Buying 300 shares of AMZN.
[java] Buying 400 shares of HWP.
[java] Selling 100 shares of BEAS.
   [java] java.rmi.AccessException: Security Violation: User: 'Stephanie' has insufficient permission to access EJB: type=<ejb>, application=_appsdir_ejb20_basic_statelessSession_ear, module=ejb20_basic_statelessSession.jar, ejb=statelessSession, method=sell, methodInterface=Remote, signature={java.lang.String,int}.

コード リスト 7-3 ユーザ Jen の出力 : create() メソッドでアクセス拒否

Buildfile: build.xml
run:
[java] username: Jen
[java] password: **********
[java] URL: t3://localhost:7001
[java] Creating a trader
   [java] java.rmi.AccessException: Security violation: User Jen has insufficient permission to access method; nested exception is:
[java] java.lang.SecurityException: Security violation: User Jen has insufficient permission to access method

セキュリティ ポリシーで保護した EJB メソッドをクライアント アプリケーションが呼び出したため、このような結果になります。

 

Back to Top Previous Next