![]() ![]() ![]() ![]() |
このチュートリアルでは、Administration Console を使用してエンタープライズ JavaBean (EJB) リソースを保護する方法を説明します。EJB リソース階層のさまざまなレベルでスコープ指定ロールとセキュリティ ポリシーを作成する方法についても、手順を追って説明します。
警告 : | このチュートリアルでは、用意されている MedRec アプリケーションのセキュリティ コンフィグレーションを模倣することはしません。代わりに、EJB のさまざまなレベルを保護する一連の手順を紹介します。各手順の後に、EJB リソースへアクセスを試行して、セキュリティ ポリシーの実装の効果を確認します。必ずしも実際のシナリオを反映しているわけではなく、手順は単に機能を紹介するためのものです。チュートリアルの最後で、作成したセキュリティ ポリシーを削除して、アプリケーションを正しいセキュリティ コンフィグレーションに戻すことを検討してください。コンフィグレーションされるセキュリティ ポリシーは、実際には、MedRec アプリケーションの正しい機能の妨げとなります。 |
このチュートリアルを始める前に、以下のことを行ってください。
MedRecDomain
および MedRecServer
を作成し、MedRecServer
を起動する。「チュートリアル 1 : 開発用の WebLogic ドメインおよびサーバ インスタンスの作成」を参照してください。
Administration Console を使用してエンタープライズ JavaBean (EJB) リソースを保護するには、次の手順に従います。
medrecEar
] を展開します。sessionEjbs
] EJB モジュールをクリックします。
このページには、WebLogic ロール マッピング プロバイダのデータベースで現在定義されているすべてのスコープ指定ロールが表示されます。
このオプションを選択すると、この EJB JAR を対象とするセキュリティ ロールを作成できます。それ以降、そのスコープ指定ロールはこの EJB JAR のセキュリティ ポリシーで使用されます。
MedRecSessionEJBPatient
と入力します。MedRecSessionEJBPatient
] をクリックします。
] を選択します。MedRecPatients
と入力します。注意: | MedRecPatients グループは、「チュートリアル 16 : ユーザ、グループ、およびグローバル セキュリティ ロールの作成」で作成しました。このグループに所属するユーザは larry@bball.com だけです。 |
[ロール条件] セクションには、「グループ MedRecPatients
」というエントリが表示されます。
MedRecSessionEJBAdmin
という名前のスコープ指定ロールを作成し、このスコープ指定ロールを MedRecAdmins
グループに付与します。medrecEar
] を展開します。sessionEjbs
] EJB モジュールをクリックします。
このページから、EJB JAR レベルでセキュリティ ポリシーを作成できます。このレベルには、JAR 内のすべての EJB とその EJB 内のすべてのメソッドが含まれます。
] を選択します。MedRecSessionEJBPatient
と入力します。
[ポリシー条件] セクションには、「ロール MedRecSessionEJBPatient
」というエントリが表示されます。
[オーバーライドされるポリシー] セクションには、「グループ everyone
」というエントリが表示されます。
sessionEjbs
JAR に対してこのセキュリティ ポリシーを定義すると、EJB リソース タイプに対してすでに定義されているセキュリティ ポリシーがオーバーライドされます。たとえば、medrecEar
アプリケーション全体に MedRecAdmin
ロールのみがアクセスできることを以前に指定した場合は、[オーバーライドされるポリシー] セクションに「ロール MedRecAdmin
」というテキストが表示されます。
ただし、この場合は、デフォルトのセキュリティ ポリシー (グループ everyone
) のみがオーバーライドされます。
デフォルトのセキュリティ ポリシーの詳細については、『ロールおよびポリシーによる WebLogic リソースの保護』の「デフォルトのルート レベルのセキュリティ ポリシー」を参照してください。
http://
host
:7101/admin
と入力します。host
は MedRecServer
をホストするコンピュータを指します。ブラウザが同じコンピュータにある場合は、http://localhost:7101/admin
という URL を使用できます。
admin@avitek.com
、[パスワード] フィールドに weblogic
と入力して、[ログイン] をクリックします。
「チュートリアル 17 : Administration Console を使用した URL (Web) リソースの保護」では、MedRecAdmin
ロールに、admin
Web アプリケーションにアクセスするパーミッションを付与しました。admin@avitek.com
には (MedRecAdmins
グループを通じて) MedRecAdmin
ロールが付与されているので、admin@avitek.com
ユーザは admin
Web アプリケーションへのログインを許可されます。
[EJB:010160]Security Violation: User: 'admin@avitek.com' has insufficient permission to access EJB: type=<ejb>, application=medrecEar, module=sessionEjbs, ejb=AdminSessionEJB, method=findNewUsers, methodInterface=Remote, signature={}.
保留中のリクエストを表示するには、すでに保護されている sessionEjbs
JAR 内の EJB である AdminSessionEJB
の findNewUsers()
メソッドにアクセスする必要があるため、エラーが表示されます。ユーザ admin@avitek.com
は、セキュリティ ポリシーの作成に使用した MedRecSessionEJBPatient
スコープ指定ロールを付与されていないため、アクセスを許可されません。
medrecEar
] を展開します。AdminSessionEJB
] EJB モジュールをクリックします。
このページから、指定された EJB のセキュリティ ポリシーを、EJB レベルで (セキュリティ ポリシーが EJB 内のすべてのメソッドに適用される)、または EJB 内の特定のメソッドに対して作成できます。
] が選択されていることを確認します。
] を選択します。MedRecSessionEJBAdmin
と入力します。
[ポリシー条件] セクションには、「ロール MedRecSessionEJBAdmin
」というエントリが表示されます。
[オーバーライドされるポリシー] セクションには、「ロール MedRecSessionEJBPatient
」というエントリが表示されます。
AdminSessionEJB
のセキュリティ ポリシーを定義すると、「手順 2 : sessionEjbs JAR を保護する」で EJB JAR に対して定義したセキュリティ ポリシーがオーバーライドされます。具体的には、継承されたポリシー文の「ロール MedRecSessionEJBPatient
」がオーバーライドされます。
「手順 3 : SessionEJB JAR の EJB へのアクセスを試行する」の手順 1 ~ 3 を繰り返します。
今回は、エラー ページが表示される代わりに、ブラウザには保留中のリクエストのリストが表示されます。
ユーザ admin@avitek.com
は MedRecEJBSessionAdmin
スコープ指定ロールを付与されているため、このような結果になります。このスコープ指定ロールは、AdminSessionEJB
(保留中のリクエストを表示するために必要な findNewUsers()
メソッドを含む EJB) のセキュリティ ポリシーを作成するときに使用したものです。
medrecEar
] を展開します。AdminSessionEJB
] EJB モジュールをクリックします。
このページから、指定された EJB のセキュリティ ポリシーを、EJB レベルで (セキュリティ ポリシーが EJB 内のすべてのメソッドに適用される)、または EJB 内の特定のメソッドに対して作成できます。
findNewUsers() - REMOTE
] を選択します。
] を選択します。MedRecSessionEJBPatient
と入力します。
このスコープ指定ロールは SessionEJB
に対して定義したものですが、findNewUsers()
メソッドは AdminSessionEJB
のコンポーネントであるため (AdminSessionEJB 自体は SessionEJB
のコンポーネント)、ここでもこのスコープ指定ロールを使用できます。
[ポリシー条件] セクションには、「ロール MedRecSessionEJBPatient
」というエントリが表示されます。
[オーバーライドされるポリシー] セクションには、「ロール MedRecSessionEJBAdmin
」というエントリが表示されます。
findNewUsers()
メソッドのセキュリティ ポリシーを定義すると、「手順 4 : AdminSessionEJB を保護する」で AdminSessionEJB
に対して定義したセキュリティ ポリシーがオーバーライドされます。具体的には、継承されたポリシー文の「ロール MedRecSessionEJBAdmin
」がオーバーライドされます。このポリシー文は、[EJB コンポーネントのメソッド] ドロップダウン リストから [すべて
] を選択したときに表示されます。
「手順 3 : SessionEJB JAR の EJB へのアクセスを試行する」の手順 1 ~ 3 を繰り返します。
ブラウザにはエラー ページが表示されます。保留中のリクエストを表示するために必要な findNewUsers()
メソッドにアクセスできるのは、MedRecSessionEJBPatient
スコープ指定ロールが付与されているユーザだけであるため、このような結果になります。ユーザ admin@avitek.com
は、セキュリティ ポリシーの作成に使用したスコープ指定ロールを付与されていないため、アクセスできません。
このチュートリアルでコンフィグレーションしたセキュリティ ポリシーは、用意されている MedRec アプリケーションのセキュリティ コンフィグレーションを模倣したものではなく、単に、ユーザが自分のアプリケーションで行えるように、EJB ポリシーを保護する方法を例として示したものです。コンフィグレーションされたセキュリティ ポリシーは、実際には、MedRec アプリケーションの正しい機能の妨げとなるため、アプリケーションを問題なく実行するには、次の手順に従ってセキュリティ ポリシーを削除する必要があります。
medrecEar
] を展開します。sessionEjbs
] EJB モジュールをクリックします。ロール MedRecSessionEJBPatient
] をチェックします。medrecEar
アプリケーションの AdminSessionEJB
EJB モジュールに移動します。
] を選択します。ロール MedRecSessionAdmin
] をチェックします。findNewUsers() - REMOTE
] を選択します。ロール MedRecSessionEJBPatient
] をチェックします。
Nmtoken
に定義されています。BEA の命名規約では、セキュリティ ロール名は単数形です。
] ポリシー条件でスコープ指定ロールを使用すると、グローバル ロールがオーバーライドされることに注意してください。
このチュートリアルでは、アプリケーションとさまざまなエンタープライズ JavaBean (EJB) リソースを保護する方法を説明しています。ここで示された例は、用意されている MedRec アプリケーションのセキュリティ コンフィグレーションを反映したものではありません。ただし、完全な MedRec アプリケーションでも同じプリンシパル (およびプログラムによるセキュリティ) を使用して MedRec の管理者と患者の両方の EJB リソースを保護します。
![]() ![]() ![]() |