| 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起動パラメータでサーバーを実行していることを確認します。