セキュリティ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

プログラムによる認可の実装

訪問者の資格のコンフィグレーション」の説明に従い、WebLogic Portal Administration Console を使用して訪問者の資格ロールを作成します。また、ポータル アプリケーションで実行できる特定の実行時チェックがあり、これにより訪問者のロールに基づいてポータル内の訪問者のパスをカスタマイズできます。この章で説明する JSP タグを使用すると、ポータル アプリケーションで動的に認可チェックを実行できます。アクセス権限は、ユーザに割り当てられているロールに基づいて定義されます。

JSP タグの <auth:isAccessAllowed><auth:isUserInRole> で、ユーザのアクセス権限を判定することで、ポータル内のユーザのパスをカスタマイズできます。

JSP タグの <auth:isUserInRole> は、実行時に現在のユーザのロールを評価するので、これを使用すると、アプリケーション リソースへのアクセスを選択的に認可できます。JSP タグの <auth:isAccessAllowed> は、デフォルトでは、アプリケーション リソースに対する資格を詳細にチェックし、どの資格が利用できないか判定します。

この章の内容は以下のとおりです。

 


ユーザに特定のロールが割り当てられているかどうかの確認

<auth:isUserInRole> タグを使用すると、実行時に現在のユーザのロールを評価できるので、アプリケーション リソースへのアクセスを選択的に認可できます。JSP にアクセスするユーザの認可を実行することで、タグにラップされているアプリケーション コンテンツの表示を制限できます。資格を付与されたポートレット内で使用した場合、複数のレベルの認可が可能です。

確認の対象となるロールは、ユーザの有効なロール セットと比較されます。WebLogic Portal Administration Console を使用して作成されたエンタープライズ アプリケーションおよび Web アプリケーション スコープの訪問者資格ロール、および WebLogic Server Administration Console で作成されたグローバル ロールが評価されます。また、ポータル リソース階層にマップされたロールを所有するロール マッピング プロバイダも評価されます。

注意 : <auth:isUserInRole> の呼び出しごとに、現在の Web アプリケーションのすべての訪問者ロールが評価されます。したがって、ロール セットが大きい場合、パフォーマンスに影響します。計算済みロールのマップは要求に対して最大 1 回評価されますが、要求間ではキャッシュされません。

このタグの使用の詳細については、Javadoc を参照してください。

 


ユーザにリソースへのアクセス権があるかどうかの確認

<auth:isAccessAllowed> タグは、デフォルトでは、アプリケーション リソースに対する資格を詳細にチェックし、どの資格が利用できないか判定します。これらは、独自のセキュリティ ポリシーを作成した、アプリケーション定義の (非ポータル) リソースです。

このタグは、アプリケーション リソースへのアクセスを認可するためのチェックを実行時に行います。アクセスが許可されている場合、戻り値 idtrue に設定されます。アクセスが許可されていない場合、戻り値 idfalse に設定されて、タグの本体はスキップされます。

このタグを使用するには、以下の手順を実行します。

  1. 資格を付与するリソースの分類法を指定します。たとえば、JSP 上のリンクに資格を付与する場合、分類法は JSP 矢印記号 link です。resourceId 属性を、この値に設定します。
  2. 手順 1 の resourceId を使用して、SecurityPolicyManager API を使用したセキュリティ ポリシーを作成します。このポリシーは、WebLogic Portal ロールに準拠可能です。
  3. WebLogic Portal Administration Console で、資格を付与するリソースにアクセスできる訪問者ロールを作成および定義します。
  4. <auth:isAccessAllowed> タグを JSP に追加して、資格を付与するリソースがこのタグで囲まれるようにし、適切なタグ属性を設定します。このタグの本体は空にできます。

属性

次の表で「」のある属性は、JSP タグが実行時に表示されるときに属性の値を評価できるものです。

表 3-1 isAccessAllowed タグの属性
id
必須String|実行時式の使用 : 不可
タグ評価の結果を格納する変数の名前。true または false に設定する。
resourceId
必須String|実行時式の使用 :
要求の対象となるリソースを含む、アプリケーション定義の分類法 (リソースの階層)。たとえば、JSP 上のリンクに資格を付与する場合、分類法は JSP > link 。
capability
省略可能String|実行時式の使用 :
リソースに対して要求される機能。機能が指定されていないと (ポリシーに機能名がないと)、汎用のセキュリティ ポリシーが検索され使用される。
inheritSecurityPolicy
省略可能Boolean|実行時式の使用 : 不可
最初に検出された単一の評価の代わりに、認可用のセキュリティ ポリシーの階層分類法評価を使用可能にする。この属性を false に設定すると、最初に検出されたセキュリティ ポリシーが使用される。この属性を true に設定すると、継承されたセキュリティ ポリシーが使用される。デフォルトは、false です。
needContextHandler
省略可能Boolean|実行時式の使用 : 不可
スコープ内のロール ポリシーがユーザ プロファイル属性に基づく可能性がある場合は、true に設定する必要がある。デフォルトは、true です。
roleScope
省略可能Integer|実行時式の使用 :
分類法のレベルを指定する。このレベルでロール ポリシーは評価され、リソースへのアクセスが許可または拒否される。この属性を使用しない場合、ロールの検索は enterprise-application スコープ (ENT_APP_ROLE_INHERITANCE) までが対象となる。
使用可能な値は以下のとおり。
  • <%=EntitlementConstants.GLOBAL_ROLE_INHERITANCE%> - WebLogic Server Administration Console で定義されたロール ポリシーをグローバル スコープで検索。
  • <%=EntitlementConstants.APPLICATION_INHERITANCE%> - WebLogic Server Administration Console で定義されたロール ポリシーをアプリケーション スコープで検索。
  • <%=EntitlementConstants.ENT_APP_ROLE_INHERITANCE%> - ロール ポリシーを、エンタープライズ アプリケーションおよびグローバル スコープで検索。
  • <%=EntitlementConstants.WEBAPP_ROLE_INHERITANCE%> - ロール ポリシーを、Web アプリケーション、エンタープライズ アプリケーション、およびグローバル スコープで検索。
  • <%=EntitlementConstants.LEAF_NODE_ROLE_INHERITANCE%> - ロール ポリシーを、リソース リーフ ノードとグローバル スコープでのみ検索。
  • <%=EntitlementConstants.HIERARCHICAL_ROLE_INHERITANCE%> - ロール ポリシーを、分類法の各レベル (リーフ ノード、Web アプリケーション、エンタープライズ アプリケーション、およびグローバル スコープ) まで検索。
subject
省略可能Subject オブジェクト|実行時式の使用 :
要求が評価されるサブジェクト (ユーザにマップされる)。サブジェクトが提供されていない場合、現在の要求のサブジェクトが使用される。

注意 : IsAccessAllowedTag クラスの詳細については、Javadoc を参照してください。

この例は、JSP 内のリンクの資格をチェックします。resourceId 属性値および id 属性値は、コードの前半で宣言されている変数から読み込まれます。

コード リスト 3-1 は、<auth:isAccessAllowed> を使用してロール ポリシーをチェックする方法を示しています。roleScope 属性値は HIERARCHICAL_ROLE_INHERITANCE に設定されているので、タグにより、リーフ ノードからリソース分類法の各レベルまで既存のロール ポリシーが検索されます。このリソースへのアクセスを許可するロールにユーザが属していない場合、ユーザにはリンクは表示されません。

コード リスト 3-1 JSP の資格をチェックするサンプル コード
<%@ taglib "http://www.bea.com/servers/p13n/tags/auth" prefix="auth" %>
...
<auth:isAccessAllowed resourceId="<%=resourceId%>" id="<%=evalResult%>"
   roleScope="<%=EntitlementConstants.HIERARCHICAL_ROLE_INHERITANCE%>" >
<p>
<a href="HRpersonnel.jsp">Click here for secure personnel information.</a>
</auth:isAccessAllowed>

その他のツール

<auth:isAccessAllowed> タグの代わりに、次のツールを使用できます。


  ページの先頭       前  次