Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド 11g リリース1 (11.1.1.7.0) B72084-02 |
|
前 |
次 |
ビジネス要件に合せてデフォルトのセキュリティ定義を様々なレベルで上書きできます。コンポーザ・コンポーネントのデフォルトのセキュリティ動作の詳細は、第17.7項「セキュリティおよびコンポーザ」を参照してください。
この章では、コンポーザ・コンポーネントのデフォルトのセキュリティ動作を上書きする方法について説明します。次のサブセクションが含まれます:
デフォルトで、MDSはページ・コンポーネントのアプリケーション・カスタマイズを制限します。つまり、ユーザーは実行時にコンポーネントまたはその属性をカスタマイズできません。アプリケーション・カスタマイズを有効にするには、コンポーネントおよびその属性のデフォルト制限を解除する必要があります。Page Customizable
コンポーネントをページに追加し、それにコンテンツを移入する場合、Page Customizable
およびそのすべての子コンポーネントのデフォルトのカスタマイズ制限が解除されます。ただし、Page Customizable
コンポーネントがテンプレートの一部である場合などのインスタンスによっては、コンポーネントおよびその属性のアプリケーション・カスタマイズを明示的に許可する必要がある場合があります。この項では、コンポーネントおよびその属性にMDSのタイプ・レベルの制限またはインスタンス・レベルの制限を適用する方法について説明します。次のサブセクションが含まれます:
コンポーネントにタイプ・レベルの制限を適用する場合は、そのコンポーネントのすべてのインスタンスが制限されます。これは、ユーザーの特定の集合のみに特定のコンポーネントまたはその属性の編集を許可し、他のすべてのユーザーにそれの編集を制限する場合に便利です。たとえば、ページ作成者またはアプリケーション管理者のみに実行時のページ・レイアウトの変更を許可する場合は、タイプ・レベルの制限をLayout Customizable
コンポーネントに対して定義し、admin
ロールを有するユーザーのみにこのコンポーネントの編集を可能にできます。
スタンドアロンXMLファイルのコンポーネントおよびその属性に対してタイプ・レベルの制限を有効化し、このファイルをadf-config.xml
ファイルのmds-config
セクションまたはmds-config.xml
ファイルに登録できます。スタンドアロンXMLファイルには、カスタマイズ制限を指定する必要があるタイプに一致する注釈が含まれています。
mds-config.xml
ファイルをアプリケーションのMETA-INF
ディレクトリに作成し、スタンドアロン・ファイルをmds-config.xml
ファイルに登録できます。
選択したコンポーネントまたは属性のアプリケーション・カスタマイズをタイプ・レベルで可能にするには:
standalone.xml
など、XMLドキュメントを作成して次のコードを追加し、太字のテキストを適切な値に置き換えます。
<?xml version="1.0" encoding="UTF-8" ?> <grammarMetadata xmlns="http://xmlns.oracle.com/bali/xml/metadata" xmlns:mds="http://xmlns.oracle.com/mds" namespace="tag_namespace"> <elementMetadata elementName="component_name"> <mds:customizationAllowed>true</mds:customizationAllowed> <attributeMetadata attributeName="attribute_name"> <mds:customizationAllowedBy>security_roles</mds:customizationAllowedBy> </attributeMetadata> </elementMetadata> </grammarMetadata>
<customizationAllowedBy>
タグを使用できるのは一度のみです。宣言の一部に、許可されるポリシーの空白区切りのリストとして、複数の値を指定できます。特定のユーザーまたはロールに対してアプリケーション・カスタマイズを有効または無効にするには、そのユーザーまたはロールをMDSセッションのカスタマイズ・ポリシーに含める必要があります。詳細は、第23.2.3項「カスタマイズ・ポリシーを含めるためのSessionOptionsオブジェクトのカスタマイズ方法」を参照してください。
<customizationAllowed>
タグは、値にブールを使用します。このタグの値がtrue
の場合は、継承されたその他のカスタマイズ・ポリシーで許可されていれば、指定されたコンポーネントを誰でもカスタマイズできることを意味します。
同じオブジェクトが<customizationAllowed>false</customizationAllowed>
でタグ付けされている場合には、<customizationAllowedBy>
タグは機能しません。また、カスタマイズは、オブジェクト・ツリーの最上位レベルで許可される必要があります。そうしない場合は、デフォルトの動作で、カスタマイズを下位レベルで許可しないことが指定されます。
次のいずれかの方法で、このXMLファイルを登録します。
XMLファイルをadf-config.xml
ファイルに登録するには、次の形式を使用してtype-config
要素をmds-config
セクション内に追加します。
<mds-config xmlns="http://xmlns.oracle.com/mds/config"> <type-config> <standalone-definitions> <classpath>File_Path/standalone.xml</classpath> </standalone-definitions> </type-config> </mds-config>
mds-config.xml
ファイルをアプリケーションのMETA-INF
フォルダに作成し、次の形式でtype-config
要素をファイルのmds-component-config
セクション内に追加します。
<?xml version="1.0" encoding="UTF-8" ?> <mds-component-config version="11.1.1.000" xmlns="http://xmlns.oracle.com/mds/config"> <type-config> <standalone-definitions> <classpath>File_Path/standalone.xml</classpath> </standalone-definitions> </type-config> </mds-component-config>
スタンドアロン・ファイルおよび関連付けられたXSDを共有ライブラリJARファイルで使用可能にします。そうしないと、MDSでそれらがロードされません。
実行時に、MDSでは、META-INF
ディレクトリ内のすべてのmds-config
インスタンスが検索され、スタンドアロン・ファイルで指定されたすべてのカスタマイズ制限がロードされます。
インスタンス・レベルの制限は、コンポーネントの特定インスタンスのカスタマイズを許可または制限する場合に便利です。インスタンス・レベルのカスタマイズ・ポリシーのコードは、タイプ・レベルのポリシー定義で使用されるコードと似ています。ただし、インスタンス・レベルのポリシーは、タイプ・レベルのポリシーを上書きします。つまり、インスタンス・レベルの制限では、タイプからの制限に関係なく、trueが保持されます。たとえば、ログイン・ページ、およびユーザー・プリファレンス・ページなどの他のページで、いくつかのUI要素があるフォームを使用している場合は、ユーザーに、ログイン・ページ上以外のフォームのすべてのインスタンスをカスタマイズすることを許可できます。このためには、タイプ・レベルでフォームのカスタマイズを許可して、ログイン・ページ内のインスタンスにのみカスタマイズを制限できます。
コンポーネントまたはその属性のカスタマイズをインスタンス・レベルで可能にできます。コンポーネント・レベルでカスタマイズ制限を適用するには、JDeveloperで、コンポーネントのcustomizationAllowed
およびcustomizationAllowedBy
属性を設定できます(第23.1.1項「タイプ・レベルのカスタマイズ・ポリシーの定義方法」を参照)。コンポーネントの属性に制限を適用するには、この項で説明した手順を実行します。
コンポーネント属性のためのインスタンス・レベルのポリシーはRDFファイルで定義します。RDFファイルはMDSによって取得され、ポリシーが実装されます。
インスタンス・レベルのカスタマイズ・ポリシーを定義するには:
JSPXファイルと同じ名前で、拡張子RDFを使用して、RDFファイル(main.jspx.rdf
など)を作成します。
このファイルはapplication_home
/
project
/public_html/mdssys/mdx
フォルダに作成します。このフォルダ構造にRDFファイルを作成すると、MDSによりファイルが取得され、ここで定義したポリシーが実装されます。
コンポーネントの属性に制限を適用するには、次の形式でタグを含めます。
tag_id(xmlns(tag_prefix=tag_namespace))/@tag_prefix:attribute_name
次の例は、Go Image Link
コンポーネント、およびCommand Button
コンポーネントのtext
属性に制限を適用する方法を示しています。
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="/"/>
<!-- Opens the customization on a tag with ID 'gil1'. -->
<rdf:Description rdf:about="gil1">
<customizationAllowed xmlns="http://xmlns.oracle.com/mds">false</customizationAllowed>
</rdf:Description>
<!-- Restricts customizations on a commandButton component's 'text' attribute. -->
<rdf:Description rdf:about="cb1/@text">
<customizationAllowed xmlns="http://xmlns.oracle.com/mds">false</customizationAllowed>
</rdf:Description>
実行時に、これらのポリシーが読み取られ、それに応じてアーチファクトのカスタマイズも可能になります。
この項では、様々なユーザー・ロールおよび責任に基づいて、特定のコンポーネント機能へのアクセスを制限するためにどのようにコンポーネント・レベルの制限を使用できるかを説明します。特に、インスタンス・レベルのカスタマイズ制限をPanel Customizable
コンポーネントに適用して、admin
ロールを有するユーザーのみにカスタマイズ・アクセスを提供する方法を説明します。つまり、admin
ロールを有するユーザーが実行時にシステムにログインする場合、ユーザーはインスタンス・レベルのカスタマイズが適用されたPanel Customizable
をカスタマイズできます。
コンポーザのプロパティ・インスペクタでは、Panel Customizable
のプロパティは、admin
権限がないユーザーには表示されません。制限されたコンポーネントでは、「編集」アイコンまたはメニュー・アイテムは無効です。これらのユーザーは、適用された制限のため、どのMovable Box
もPanel Customizable
にドロップできません。また、このPanel Customizable
内のShow Detail Frame
を再配置できません。
ユーザー・ロールに基づいて機能を制限することは、カスタマイズ制限を適用するための1つの方法です。コンポーネント機能へのアクセスを有効化または制限するために、ロール・ベースの結果を提供するExpression Language式(EL)を使用することもできます。
注意: MDSのカスタマイズ制限は、 |
この項には次のサブセクションが含まれます:
インスタンス・レベルのカスタマイズ制限を適用する前に、ADFセキュリティを使用してアプリケーションを保護する必要があります。詳細は、第68.3項「ADFセキュリティの構成」を参照してください。
前の項では、実行時に、admin
ロールを有するユーザーのみがPanel Customizable
のすべての機能にアクセスして、その属性をカスタマイズできるよう、Panel Customizable
コンポーネントにカスタマイズ制限が適用されます。
この項では、admin
およびcustomer
という2つのロールが作成され、両方のユーザーにページ権限が付与されます。admin
ロールを有するユーザーは、Panel Customizable
(panelCustomizable1
)コンポーネントをカスタマイズできます。ただし、前の項で適用したカスタマイズ制限のため、customer
ロールを有するユーザーはpanelCustomizable1
をカスタマイズする権限がなく、これらのユーザーはpanelCustomizable1
のすべての機能は使用できません。
jazn-data.xml
ファイルでロールを作成するには:
「アプリケーション・リソース」パネルで、jazn-data.xmlファイルを右クリックして「開く」を選択します。
エディタの下部の「ユーザーとロール」タブをクリックし、図23-1に示すように、ファイルの「ユーザー」セクションを開きます。
「アプリケーション・ロール」タブをクリックします。
「アプリケーション・ロール」ページで、図23-2に示すように、ロール表の「新規アプリケーション・ロール」アイコンをクリックします。
「名前」フィールドで、ユーザー名admin
を指定します。
オプションで、「表示名」フィールドおよび「説明」フィールドで、新しいロールのための表示名および説明を指定します。
手順3から6を繰り返し、別のロールcustomer
を追加します。
「ユーザー」タブをクリックします。
「ユーザー」ページでは、図23-3で示すように、「新規ユーザー」アイコンをクリックして資格証明を指定することで新規ユーザーを作成し、「割当て済ロール」表内の「ロールの割当て」アイコンをクリックして「アプリケーション・ロールの割当て」を選択することでこれらのユーザーにロールを割り当てます。
ページ下部の「ADFポリシー」タブをクリックします。
ページ上の「Webページ」タブを選択します。
ページ定義のリストから、図23-4に示すように、権限を付与するページを選択します。
「ロールに付与済」列で、「アプリケーション・ロールの追加」アイコンをクリックします。
「ロールの選択」ダイアログで(図23-5)、admin
ロールおよびcustomer
ロールを選択し、「OK」をクリックします。
各ロールを選択し、図23-6で示すように、すべての権限(表示、カスタマイズ、編集、付与、パーソナライズ)を付与します。
ユーザーおよびロールの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFセキュリティの有効化に関する項を参照してください。
admin
ロールを有するユーザーのみがPanel Customizable
のすべての機能にアクセスできるという、Panel Customizable
コンポーネントの予期された実行時動作(それをカスタマイズする機能を含む)を可能にするには、このリクエストのためのMDSセッションにおいてそのカスタマイズ・ポリシーにそのユーザー・ロールを含める必要があります。これを実現するには、次のカスタマイズ・ポリシーをSessionOptions
オブジェクトに含めます。
SecurityContext stx = ADFContext.getCurrent().getSecurityContext(); cPol = new CustomizationPolicy(stx.getUserRoles());
次に、このカスタマイズ・ポリシーを持つMDSセッションが作成されます。
ComposerSessionOptionsFactory
クラスを実装するには:
「ファイル」メニューから、「新規」を選択します。
「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログが開きます。
「名前」フィールドにAppsSessionOptionsFactoryImpl
と入力します。
「OK」をクリックします。
AppsSessionOptionsFactoryImpl.java
ファイルが「ソース」ビューにレンダリングされます。
次のライブラリをインポートします。
import oracle.adf.share.ADFContext; import oracle.adf.share.security.SecurityContext; import oracle.adf.view.page.editor.mds.ComposerSessionOptionsFactory; import oracle.adf.view.page.editor.mode.ModeContext; import oracle.mds.config.CustClassListMapping; import oracle.mds.config.CustConfig; import oracle.mds.core.SessionOptions; import oracle.mds.cust.CustClassList; import oracle.mds.cust.CustomizationClass; import oracle.mds.cust.CustomizationPolicy;
次のコードを追加してComposerSessionOptionsFactory
クラスを実装し、SessionOptions
を渡します。
public class AppsSessionOptionsFactoryImpl implements ComposerSessionOptionsFactory { public AppsSessionOptionsFactoryImpl() { } public SessionOptions createSessionOptions(SessionOptions sessionOptions, String mode) { CustomizationClass[] custLayer; CustConfig custConfig = null; CustomizationPolicy cPol = null; if (ModeContext.EDIT_MODE.equals(mode)) { //Mode is Edit, change to SiteCC custLayer = EDIT_LAYER; } else { //Mode is View, change to UserCC + SiteCC custLayer = VIEW_LAYER; } try { CustClassList custClassList = new CustClassList(custLayer); CustClassListMapping custClassListMapping = new CustClassListMapping("/", null, null, custClassList); custConfig = new CustConfig(new CustClassListMapping[] { custClassListMapping }); SecurityContext stx = ADFContext.getCurrent().getSecurityContext(); cPol = new CustomizationPolicy(stx.getUserRoles()); } catch (Exception e) { e.printStackTrace(); } if(sessionOptions.getServletContextAsObject() != null) { return new SessionOptions(sessionOptions.getIsolationLevel(), sessionOptions.getLocale(), custConfig, sessionOptions.getVersionContext(), sessionOptions.getVersionCreatorName(), cPol == null ? sessionOptions.getCustomizationPolicy() : cPol, sessionOptions.getServletContextAsObject()); } else { return new SessionOptions(sessionOptions.getIsolationLevel(), sessionOptions.getLocale(), custConfig, sessionOptions.getVersionContext(), sessionOptions.getVersionCreatorName(), cPol == null ? sessionOptions.getCustomizationPolicy() : cPol); } } //Edit mode SiteCC private static final CustomizationClass[] EDIT_LAYER = new CustomizationClass[] { new SiteCC() }; //View mode SiteCC + USerCC private static final CustomizationClass[] VIEW_LAYER = new CustomizationClass[] { new SiteCC(), new UserCC() }; }
第22.3.5項「コンポーザでの実装の登録方法」で説明した手順を実行して、ComposerSessionOptionsFactory
クラスの実装を登録します。ここで、ユーザー・ロールはMDSセッションのカスタマイズ・ポリシーに含まれました。
WebCenterComposerFilter
を構成するには、第22.3.6項「WebCenterComposerFilterの構成方法」で説明した手順を実行します。
この項では、Panel Customizable
コンポーネント上の特定ロールに対してアプリケーション・カスタマイズを有効にします。実行時に、admin
など、指定したロールのみが、その属性のカスタマイズを含むPanel Customizable
のすべての機能にアクセスできます。他のロールを有するユーザーも、限られたコンポーネント機能のみを使用できます。
インスタンス・レベルのカスタマイズ制限を適用するには:
JSPXページで、コンポーザ・タグ・ライブラリからChange Mode Linkコンポーネントを追加します。
Page CustomizableコンポーネントをChange Mode Link
コンポーネントの下に追加します。
Page Customizable内のコンポーネントPanel Customizable
にインスタンス・レベルのカスタマイズ制限を適用します。
この制限は、ディレクトリpublic_html/mdssys/mdx/<pagename>.jspx.rdf
に格納されます。
「ソース」ビューは次のようになります。
<pe:changeModeLink id="cml1"/> <pe:pageCustomizable id="pageCustomizable1"> <cust:panelCustomizable id="panelCustomizable1" layout="scroll"/> <f:facet name="editor"> <pe:pageEditorPanel id="pep1"/> </f:facet> </pe:pageCustomizable>
「設計」ビューは、図23-7のようになります。
Panel Customizable
内にShow Detail Frame
コンポーネントを追加し、別のPanel Customizable
コンポーネントをShow Detail Frame
コンポーネントの子として含めます。
注意: この手順は、複数のコンポーネントを示すことによって実行時の動作をより説明しやすいよう、説明のためのみにあります。コンポーザ・コンポーネントの追加方法の詳細は、第5.3項「ポータルへのページの追加」を参照してください。 |
実行時の処理は、ログオンしているユーザーによって異なります。違いを確認するには、あるユーザーとしてログインしてから別のユーザーとしてログインしてください。例:
アプリケーション・ナビゲータでJSPXページを右クリックし、「実行」を選択します。
admin
ロールを有するユーザーとしてページにログインし、編集モードに切り替えます。Panel Customizable
コンポーネントの内と外に、「コンテンツの追加」ボタンおよび「編集」アイコンが表示されます。図23-8で示すように、admin
ロールを有するユーザーとして、「ソース」ビューに切り替えてPanel Customizable
外のプロパティにアクセスできます。つまり、admin
ロールを有するユーザーは、このコンポーネントを編集できます。
customer
ロールを有するユーザーとしてページにログインし、編集モードに切り替えます。Panel Customizable
外では、「コンテンツの追加」ボタンおよび「編集」アイコンは使用できません。つまり、このコンポーネントは、customer
ロールを有するユーザーには編集できません。図23-9で示すように、「ソース」ビューでは、「コンテンツの追加」および「編集」アイコンはコンポーネントに対してグレー表示されます。
デフォルトでは、Page Customizable
コンポーネントは、その下にあるすべてのコンポーネントのアプリケーション・カスタマイズを有効にします。これを、いくつかのコンポーネントに対してカスタマイズを制限するように変更できます。Page Customizable
コンポーネントは、ネストされたページまたはフラグメント上にあるコンポーネントに対してカスタマイズを有効にしません。このようなコンポーネントに対して手動でカスタマイズを有効にする必要があります。このような要件に対処するために、MDSは、customizationAllowed
属性およびcustomizationAllowedBy
属性を提供しています。これらの属性は、ページ上の特定コンポーネントに対するカスタマイズの有効化または制限に使用できます。
customizationAllowed
属性は、コンポーネントを実行時にカスタマイズできるかどうかを制御します。この属性をfalse
に設定する場合は、コンポーネントを実行時にカスタマイズできません。つまり、「コンポーネント・プロパティ」ダイアログでは、プロパティはグレー表示され、編集は許可されません。
customizationAllowedBy
属性は、カスタマイズを可能にするロールを指定します。
この項では、コンポーネントに対してカスタマイズを有効化および制限する例を提供します。次のサブセクションが含まれます:
詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の拡張メタデータ・プロパティに関する項を参照してください。
イメージ・コンポーネントに対してアプリケーション・カスタマイズを有効化するには:
第19.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」で作成したMyPage.jspx
ページで、ADF Faces Imageコンポーネント、たとえば、panelCustomizable1
というPanel Customizable
内のbrandingImage.gif
を追加します。
アプリケーション・カスタマイズは、Image
コンポーネントに対して自動的に有効になります(Page Customizable
コンポーネント内にネストされているため)。
MyPage.jspx
を実行します。
ページの編集モードに切り替えます。
「表示」メニューから「ソース」を選択して、ページの「ソース」ビューに切り替えます。
「ソース・ビュー」パネル内のコンポーネント階層でイメージを選択し、「イメージのプロパティの表示」アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログにイメージ・プロパティが表示されます。このダイアログで、使用可能なプロパティを編集できます。プロパティを編集して、「OK」をクリックします。プロパティの編集可能値は、アプリケーション・カスタマイズがコンポーネントに対して有効になっていることを表します。
イメージ・コンポーネントに対してcustomizationAllowed
属性をfalse
に設定することで、ページ上のイメージのカスタマイズを制限できます。
イメージ・コンポーネントに対してカスタマイズを制限するには:
Oracle JDeveloperで、前の項で追加したImage
コンポーネントを選択し、プロパティ・インスペクタで、customizationAllowedの値をfalse
に設定します。
MyPage.jspx
を実行します。
ページの編集モードに切り替えます。
「表示」メニューから「ソース」を選択して、ページの「ソース」ビューに切り替えます。
「ソース・ビュー」パネル内のコンポーネント階層でイメージを選択し、「イメージのプロパティの表示」アイコンをクリックします。
「コンポーネント・プロパティ」ダイアログで、プロパティがグレー表示され、編集はできなくなります。
特定のコンポーネント属性を実行時にカスタマイズできるかどうかを選択できます。また、属性に行われた変更がMDSなどの永続ストアまで持続する必要があるかどうかを指定できます。次の方法で、属性レベルのセキュリティを適用できます。
プロパティ・フィルタを定義することによる
コンポーネント・レベルで変更を持続させることによる
プロパティ・フィルタの適用の詳細は、第20.8.1項「プロパティ・フィルタの定義方法」を参照してください。
この項では、コンポーネント・レベルで変更を持続させる方法を説明します。次のサブセクションが含まれます:
アプリケーションが、変更を持続させるためにFilteredPersistenceChangeManager
を使用して構成されている場合は、adf-config.xml
ファイル内のpersist-changes
属性を使用して、特定の属性への変更を持続させる必要があるかどうかを指定できます。
注意: 変更の永続性の詳細は、第21.11項「永続性変更マネージャの構成」を参照してください。
|
例23-1は、一部の属性に対して定義されたpersist-changes
属性を持つadf-config.xml
のサンプルを示しています。
例23-1 adf-config.xmlファイル内でのpersist-changes属性の使用
<adf-config xmlns="http://xmlns.oracle.com/adf/config"> <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config"> <persistent-change-manager> <persistent-change-manager-class> oracle.adf.view.rich.change.MDSDocumentChangeManager </persistent-change-manager-class> </persistent-change-manager> <taglib-config> <taglib uri="http://xmlns.oracle.com/adf/pageeditor"> <tag name="imageLink"> <attribute name="destination"> <persist-changes>true</persist-changes> </attribute> </tag> <tag name="customAction"> <attribute name="text"> <persist-changes>true</persist-changes> </attribute> <attribute name="icon"> <persist-changes>true</persist-changes> </attribute> </tag> </taglib> </taglib-config> </adf-faces-config> </adf-config>
persist-changes
属性を含み、値をtrue
に設定する場合、コンポーネント属性に対して行われた変更は、そのコンポーネントのいずれのインスタンスでも維持されます。
注意:
|
Panel Customizable
コンポーネントおよびShow Detail Frame
コンポーネントに対してアクションを実行するユーザーの能力は、ページ・セキュリティから継承します。継承は、adf-config.xml
ファイル内のアプリケーション規模のスイッチenableSecurity
の値に基づきます。アプリケーションを作成するときに「WebCenter Portal - Frameworkアプリケーション」テンプレートを選択する場合、adf-config.xml
ファイルは、「アプリケーション・リソース」パネルの「ディスクリプタ」
の下のADF META-INF
フォルダに存在します。
この項では、Panel Customizable
およびShow Detail Frame
コンポーネント・アクションに対してアクション・レベルの制限を適用する方法を説明します。次のサブセクションが含まれます:
enableSecurity
要素は、デフォルトではadf-config.xml
内で使用できません。Panel Customizable
およびShow Detail Frame
コンポーネントに対するページ・レベルのセキュリティの継承をオーバーライドまたは拡張するには、例23-2に示すように、adf-config.xml
ファイルのcustomizableComponentsSecurity
セクションを追加し、そのセクションのenableSecurity
要素をtrue
に設定する必要があります。
例23-2 adf-config.xmlのカスタマイズ可能コンポーネント・セキュリティ・セクション内のenableSecurity要素
<cust:customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <cust:enableSecurity value="true"/> <cust:actionsCategory> .......................................... </cust:customizableComponentsSecurity>
アクションに対する制限は、次のレベルで実装できます。
ページ・レベル: WebCenter Portalのカスタマイズ可能コンポーネントがページ・レベルの権限を継承するように、これらのコンポーネントのセキュリティを定義できます。これがデフォルトの動作です。
デフォルトでは、カスタマイズ可能コンポーネントは、編集、パーソナライズまたはカスタマイズなど定義されているページ・レベル権限から、許容されるアクションを継承します。つまり、ページに対する編集、パーソナライズまたはカスタマイズの権限を有するユーザーは、そのページに対する表示モードのユーザー・カスタマイズを実行できます。enableSecurity
要素によって、セキュリティ継承動作を上書きできます。次の値のいずれかを取ることができます。
true
: true
に設定した場合(指定されていない場合はデフォルト)、ユーザーがコンポーネントを変更できるかどうかは、まずページ権限に基づいて決定され、次に、そのタイプの権限に対して指定されている現在のアクション・セットに応じて調整されます。たとえば、ユーザーがカスタマイズ権限を持っている場合、カスタマイズ・カテゴリを構成するアクション(移動、カスタマイズなど)はユーザーに使用できますが、adf-config.xml
ファイルで定義されるアクションによって上書きされます。
false
: false
に設定した場合、すべてのアクションがユーザーに選択可能になります。adf-config.xml
で構成されたアクションとユーザーのページ権限は無視されます。
アクション・カテゴリ・レベル: Panel Customizable
コンポーネントおよびShow Detail Frame
コンポーネントのすべてのアクションに対してセキュリティを定義できます。
adf-config.xml
ファイル内にactionsCategory
要素を追加すると、複数のアクションに対するセキュリティを同時に定義できます。有効化したactionCategory
属性に基づいて、コンポーネントに適切な権限が設定されます。
アクション・レベル: Panel Customizable
コンポーネントおよびShow Detail Frame
コンポーネントの個々のアクションに対してセキュリティを定義できます。
adf-config.xml
ファイル内でactions
要素を使用すると、各アクションを有効化または無効化できます。有効化したactions
属性に基づいて、コンポーネントに適切な権限が設定されます。
注意:
|
adf-config.xml
ファイルでenableSecurity
をtrue
に設定する場合、アプリケーション・レベルでコンポーネント・アクションのセキュリティを定義できます。true
の値は、adf-config.xml
内に指定されているactionsCategory
およびactions
の値以外に権限チェックが行われることを示します。
adf-config.xml
ファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクションにactionsCategory
要素を追加して、複数のPanel Customizable
およびShow Detail Frame
コンポーネント・アクションに対するセキュリティを定義できます。有効化したactionsCategory
属性に基づいて、コンポーネントに適切な権限が設定されます。
adf-config.xml
ファイルのactions
およびactionsCategory
要素には、特定のデフォルト・マッピングがあります。表23-1に、様々なactionsCategory
属性およびデフォルトでサポートされるアクションを示します。
adf-config.xml
で作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。
表23-1 アクション・カテゴリおよびアクション・マッピング
actionsCategory | サポートされるアクション |
---|---|
|
showMoveAction showRemoveAction showMinimizeAction showResizer allowAction |
|
showEditAction showAddContentAction showSplitAction |
personalizeActionsCategory
設定およびcustomizeActionsCategory
設定の組合せに基づくコンポーネントの動作は、次のとおりです。
personalizeActionsCategory
およびcustomizeActionsCategory
の両方がfalse
に設定される場合、ユーザーは、Show Detail Frame
コンポーネントを移動、展開、折りたたみ、削除、サイズ変更または編集できず、Panel Customizable
コンポーネントを編集または削除することや、それらにコンテンツを追加することもできません。
personalizeActionsCategory
がtrue
に設定され、customizeActionsCategory
がfalse
に設定される場合、ユーザーは、Show Detail Frame
コンポーネントを移動、展開、折りたたみ、削除またはサイズ変更できますが、それらを編集できません。また、Panel Customizable
コンポーネントを削除して、それらの内部にコンポーネントを再配置できますが、それらを編集することやページにコンポーネントを追加できません。
注意: 他のアクション設定と同様に、 |
personalizeActionsCategory
およびcustomizeActionsCategory
の両方がtrue
に設定される場合、ユーザーは、Show Detail Frame
コンポーネントを移動、展開、折りたたみ、削除、サイズ変更および編集でき、Panel Customizable
コンポーネントを編集および削除することや、それらにコンテンツを追加することもできます。ユーザーは、「コンテンツの追加」ボタンを使用してリソース・カタログからコンテンツを追加することや、「ボックスの追加」アイコンを使用してBoxコンポーネントを追加することや、ドラッグ・アンド・ドロップすることで他のPanel Customizable
コンポーネントからコンポーネントを移動できます。
注意: 権限が付与からカスタマイズ、パーソナライズ、表示の順にカスケードするため、 |
例23-3に、adf-config.xml
ファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクションに追加できるactionsCategory
エントリを示します。
例23-3 カスタマイズ可能コンポーネント・セキュリティ・セクション内のactionsCategory要素
<cust:customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <cust:enableSecurity value="true"/> <cust:actionsCategory> <cust:actionCategory name="personalizeActionsCategory" value="true"/> <cust:actionCategory name="customizeActionsCategory" value="false"/> </cust:actionsCategory> <cust:actions> .......................................... </cust:actions> </cust:customizableComponentsSecurity>
例23-4に示すように、これらの要素の値にはELも使用できます。
例23-4 actionCategoryエントリ内のカスタマイズ可能コンポーネントで使用されるEL
<cust:actionsCategory> <cust:actionCategory name="personalizeActionsCategory" value="#{appBusinessRules.InsideCorpNetwork}"/> </cust:actionsCategory>
参照用に、マネージドBeanappBusinessRules
は、第68.15項「ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド」の例68-5で示すように定義されます。
adf-config.xml
ファイルのカスタマイズ可能コンポーネント・アクション・セキュリティ・セクション内でactions
要素を使用して、個々のShow Detail Frame
アクションを表示または非表示できます。有効化したactions
属性に基づいて、Show Detail Frame
コンポーネントに適切な権限が設定されます。
adf-config.xml
で作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。
他のアクション設定と同様に、allowAction
設定は、ページへのコンテンツの追加およびページ・コンテンツの移動または再配置の機能を制御します。
コンポーザでは、ユーザーは次の方法でコンテンツを追加および再配置できます。
「ボックスの追加」アイコンを使用してBox
コンポーネントを追加します。
「コンテンツの追加」ボタンを使用して、リソース・カタログからBox
コンポーネントにコンテンツを追加します。
Show Detail Frame
コンポーネントの「アクション」メニューで「上へ移動」および「下へ移動」アクションを使用することで、Panel Customizable
コンポーネント内でShow Detail Frame
コンポーネントを移動します。
Panel Customizable
コンポーネントと交わるようにShow Detail Frame
コンポーネントをドラッグ・アンド・ドロップします。
表23-2では、allowAction
およびshowAddContentAction
設定によってコンテンツを追加する機能を説明します。
表23-2 ページへのコンテンツの追加のためのアクション設定
allowAction設定 | showAddContentAction設定 | 「コンテンツの追加」ボタンが表示されているかどうか |
---|---|---|
|
|
はい |
|
|
いいえ |
|
true |
いいえ |
|
|
いいえ |
表23-3では、allowAction
設定およびshowSplitAction
設定に応じて「ボックスの追加」アイコンを使用してコンテンツを追加する機能を説明します。
表23-3 ページでのコンテンツの再配置のためのアクション設定
allowAction設定 | showSplitAction設定 | 「ボックスの追加」アイコンが表示されているかどうか |
---|---|---|
|
|
はい |
|
|
いいえ |
|
|
いいえ |
|
|
いいえ |
表23-4では、allowAction
およびshowMoveAction
設定によってページにコンテンツを移動する機能を説明します。
表23-4 ページでのコンテンツの移動のためのアクション設定
allowAction設定 | showMoveAction設定 | ページ上でコンテンツを移動したかどうか |
---|---|---|
|
|
はい |
|
|
いいえ |
|
|
いいえ |
|
|
いいえ |
注意:
|
例23-5に、adf-config.xml
ファイルのカスタマイズ可能コンポーネント・アクション・セクションに追加できるactions
エントリを示しています。要素値にはELを使用できます。
例23-5 カスタマイズ可能コンポーネント・セキュリティ・セクション内のaction要素
<cust:customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <cust:enableSecurity value="true"/> <cust:actionsCategory> .......................................... </cust:actionsCategory> <cust:actions> <cust:action name="showMinimizeAction" value="true"/> <cust:action name="showMoveAction" value="false"/> </cust:actions> </cust:customizableComponentsSecurity>
タスク・フロー編集権限は、タスク・フローを編集する体験に非常に大きな影響を与えるため、タスク・フローに対する編集権限はデフォルトでは無効になっています。実際に、デフォルトでは、タスク・フローに対して権限は与えられていません。適切な権限を有するユーザーのみがタスク・フローを編集できることを確実にするには、コンポーザ・コンテキストで次の2つのタスクを実行することで、タスク・フローのセキュリティを実装できます。
タスク・フローに明示的に編集、カスタマイズまたは付与権限を与えます。
コンポーザにタスク・フローの権限のチェックを可能にし、適切な権限を有するユーザーのみにタスク・フローの編集またはカスタマイズを許可します。
この項では、タスク・フローに対して制限を適用して権限チェックを可能にする方法を説明します。次のサブセクションが含まれます:
jazn-data.xml
ファイル概要エディタの「リソース権限」ページで権限付与を作成することで、タスク・フローのアクセス・ポリシーを定義できます。作成した権限は、ファイルのポリシー・ストア・セクションのメタデータとして表示されます。これらの権限またはパーミッションは、コンポーザでのタスク・フローのズーム・インおよび編集の機能を制御します。
jazn-data.xml
ファイルでのタスク・フローに対する権限を付与または取り消すには:
「アプリケーション」メニューから、「保護」、「ADFポリシー」の順に選択します。
概要エディタでjazn-data.xml
ファイル内のタスク・フローを選択し、図23-12で示すように「ロールに付与済」列の「追加」ボタンをクリックします。
「ロールの選択」ダイアログ(図23–13)で、「追加」ボタンをクリックすることで、権限を付与するアプリケーション・ロールまたは新規ロールを作成するアプリケーション・ロールを選択します。
「OK」をクリックします。
「処理」列で1つ以上の権限を選択します。
jazn-data.xml
ファイルを保存します。
注意: ファイルの「ソース」ビューには、次のように権限付与が表示されます。 <permissions> <permission> <class>oracle.adf.controller.security.TaskFlowPermission</class> <name>/WEB-INF/task-flow-definition.xml#task-flow-definition</name> <actions>customize,view</actions> </permission> </permissions>
|
タスク・フロー権限に基づくコンポーザの動作の詳細は、第17.7.1項「ページおよびタスク・フローのセキュリティ」を参照してください。
タスク・フローに対する権限付与の定義の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFバインド・タスク・フローのためのセキュリティ・ポリシーの定義方法に関する項を参照してください。
ユーザーがタスク・フローの編集を試みるとき、デフォルトでは、コンポーザはタスク・フローの権限をチェックしません。タスク・フローのセキュリティを強化するには、タスク・フローの権限をチェックして編集に必要な権限を有するユーザーのみを許可するように、コンポーザを構成する必要があります。それを行うには、次の例で示すように、アプリケーションのadf-config.xml
ファイル内の<pe:task-flow-security>
要素のcheck-permission
プロパティを設定します。
<pe:page-editor-config>
<pe:security-config>
<pe:task-flow-security check-permission="true" />
</pe:security-config>
</pe:page-editor-config>
adf-config.xml
の設定の詳細は、第B.2.2項「adf-config.xml」を参照してください。
注意: 前のリリースでは、次のJVMパラメータを使用してサーバーを実行することで、タスク・フローに対して権限チェックを有効にできました。
ただし、現在この方法は非推奨です。後方互換性のために、コンポーザはまず |
コンポーザでは、カスタマイズを有効にするために次のセキュリティ・チェックが実行されます。
ページ上のリージョンが編集権限またはカスタマイズ権限を付与されています。
タスク・フローが編集権限またはカスタマイズ権限を付与されてます。
注意: これは、デフォルトでは有効になっていない、オプションのセキュリティ設定です。 |
コンポーネントはイテレータではネストされていません。
MDSカスタマイズ制限がコンポーネントおよび属性に適用されています。
ユーザーは、前述の条件を満たしている場合のみ、ページおよびタスク・フローをカスタマイズできます。デフォルトでは、コンポーザは、ページ・レベルのセキュリティ・チェックを実行するためにpagePolicy
を使用します。
場合によっては、様々なセキュリティ・チェックを実行する必要がある(おそらく、コンポーザによってすでに提供されているものにアプリケーション・レベルのいくつかのチェックを追加する)可能性があります。それを行うには、コンポーザのデフォルトのセキュリティ・ポリシーをカスタム・ポリシーで上書きします。この項では、その実行方法を説明します。次の項が含まれます:
コンポーザの基本セキュリティ・クラスを拡張することで、カスタム・ポリシーを作成できます。ページまたはタスク・フローをチェックするかどうかに応じて、次の基本セキュリティ・クラスを拡張できます。
ページ・ポリシー: oracle.adf.view.page.editor.security.BasePageSecurityPolicy
タスク・フロー・ポリシー: oracle.adf.view.page.editor.security.TaskflowPermissionPolicy
もう一歩前進するために、カスタム・チェックが適用できない場合や適切な結果を実現しない場合にコンポーザのデフォルト・チェックが実行されるように、ポリシーを構成できます。このためには、DefaultPageSecurityPolicy
クラスを拡張して、例23-6で示すようにsuper.isCustomizable()
メソッドをコールする必要があります。
例23-6 DefaultPageSecurityPolicyを拡張するカスタム・ポリシー
public class CustomPageSecurityPolicy extends DefaultPageSecurityPolicy
{
. . .
public boolean isCustomizable()
{
// Security checks that this custom page policy must perform should go here
. . .
// If we cannot determine the security policy, chain it to Composer's default implementation
return super.isCustomizable();
}
}
コンポーザのセキュリティ・ポリシーを上書きするようカスタム・ポリシーを構成するには、<pe:security-config>
セクションをアプリケーションのadf-config.xml
ファイルに含めて、カスタム・セキュリティ・ポリシーを登録する必要があります。
カスタム・セキュリティ・ポリシーを登録するには:
「アプリケーション・リソース」パネルの「ディスクリプタ」
の下のADF META-INF
フォルダから、アプリケーションのadf-config.xml
ファイルを開きます。
<pe:page-editor-config>
セクションが存在しない場合は追加し、その中に次のコードを追加します。
<pe:security-config> <pe:security-policies> <pe:security-policy name="optional_unique_name" override="composer_security_policy_name"> <pe:policy-class>fully_qualified_custom_policy_class_name</pe:policy-class> </pe:security-policy> </pe:security-policies> </pe:security-config>
ここで
override
は、上書きされるデフォルト・ポリシーを指定します。オプションは、pagePolicy
およびtaskflowPolicy
です。
タスク・フロー・ポリシーの詳細は、第23.6項「タスク・フローのセキュリティの実装」を参照してください。
注意: ここに記載していない即時利用可能なポリシーは、引き続きデフォルトでチェックされます。 |
<pe:policy-class>
は、カスタム・ポリシー・クラスの名前を指定します。
adf-config.xml
ファイルを保存します。
コンポーザは、カスタム・ポリシーで定義されているセキュリティ・チェックを実行し、それに応じてコンポーネントに対してカスタマイズを有効にします。
この項では、コンポーザ・コンポーネントの使用中に発生する可能性のあるセキュリティ関連問題のトラブルシューティングに役立つ情報を提供します。
ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。
問題
Show Detail Frame
およびPanel Customizable
で「編集」アイコンが表示されないか、Panel Customizable
で「コンテンツの追加」ボタンが表示されません。また、Panel Customizable
コンポーネントの外部にShow Detail Frame
を移動できないか、別のPanel Customizable
コンポーネントにドロップできません。
解決方法
MDSを使用することでPanel Customizable
が制限されていることと、adf-config.xml
でエントリを使用することでコンポーネント・アクションが保護されていないことを確認します。
問題
jazn-data.xml
ファイルでタスク・フローに権限を付与できません。
解決方法
第23.6項「タスク・フローのセキュリティの実装」で記述しているように、Java起動パラメータでサーバーを実行していることを確認します。