Oracle WebCenter Framework WebCenterアプリケーションの構築 - ステップ・バイ・ステップ 10g(10.1.3.2.0) E05617-02 |
|
この章では、ようこそページをSRDemoアプリケーション内に作成し、ユーザー用にカスタマイズする方法について説明します。エンド・ユーザーにお知らせのテキストを表示するリッチ・テキスト・コンポーネントを追加し、第4章「コンテンツ・リポジトリの設定」で設定したサンプルのコンテンツ・リポジトリからファイルを所定の場所に表示します。次に、ようこそページをパブリックにしてユーザー全員が表示できるようにし、「Login」リンクを追加してユーザーがユーザーIDおよびパスワードを入力すると専用のアプリケーションに情報を表示できるようにします。作成するようこそページは、図5-1のような外観です。
この章の内容は次のとおりです。
この項の手順では、リッチ・テキスト・コンポーネントをアプリケーション内の既存のようこそページに追加する方法を示します。このリッチ・テキスト・コンポーネントは、パブリック・ユーザーへのお知らせを表示します。会社の管理者は、サイト管理のアクセス権があるため、実行時にこのお知らせを更新できます。
リッチ・テキスト・コンポーネントを追加するには、次のようにします。
SRWelcome.jspx
ページの「設計」ビューを開きます。このページは、「UserInterface」、「Webコンテンツ」、「app」の下にあります。
acmecenter.jpg
を探します。
<af:objectImage height="376" width="800" source="../images/acmecenter.jpg"/>
この時点で、ソース・コードのその部分は、図5-2のようになります。
今度は、この場所にリッチ・テキスト・ポートレットを追加します。
RichTextPortletProducer
と入力し、「次へ」をクリックします。
「panelHorizontal」
コンポーネントをクリックして選択します。
panelHorizontal
コンポーネント内に表示されます。
true
に設定します。
600
ピクセルに設定します。
この作業は、管理者がページ上のリッチ・テキスト・ポートレットのコンテンツをカスタマイズできる必要があるため、実行する必要があります。
すべてのJSPおよびJSPXファイルに対する標準的なJ2EEセキュリティ制約のため、デフォルトのSRDemoログイン・ページに自動的にリダイレクトされます。このログイン・ページは、静的HTMLを含む単純なJSPページです。ahunold
、sking
およびdfaviet
の3種類のユーザーとしてログインできます(図5-3を参照)。
sking
としてログインすると、次の図の右端に示されている管理タブを含め、すべてのタブが表示されます。
実行時のポートレットは、図5-4のような外観です。
ahunold
としてログインすると、管理タブは表示されません。これは、ahunold
が管理者ではないためです。
Welcome to My Acme Corporation! Introducing the Service Request Portal (Version 5.0) Here you can get help with questions and/or issues with your My Acme appliance. View the My Acme page to view your current service request information such as status, history, and much more. Now available, product manuals for the new Fridge Freezer F011s appliance.
このテキストを書式設定するには、次のようにします。
コンテンツ管理システムを使用してコンテンツを表示する方法について、ユーザーには多くの選択肢があります。一般的な方法はコンテンツをリンクとして表示することですが、開発者は、書式設定などの理由で、テキストまたはHTMLファイルのコンテンツをアプリケーション内に直接表示することが必要な場合もあります。JCRを使用すると、ファイルを所定の場所に表示でき、コンテンツ管理システム内からもコンテンツを管理できます。
この項の手順では、コンテンツ・リポジトリのファイルを既存のページ上に表示する方法を示します。これにより、ページをレンダリングするアプリケーションを変更せずにページを編集できます。
ファイルを所定の場所に表示するには、次のようにします。
SRWelcome.jspx
ページをまだ開いていない場合は、「SRDemoStarter」、「UserInterface」、「Webコンテンツ」、「app」から開きます。
「panelHorizontal」
を選択してpanelPage
上の、リッチ・テキスト・ポートレットが含まれるpanelHorizontal
の下にドラッグします。
center
に設定します。
「getURI(String)」
の下の「Return」ノードを開き、「URI」(図5-5)をpanelHorizontalにドラッグします。アクション・バインディング・エディタが表示されます(図5-6を参照)。
/welcome.html
と入力します。
OutputText
の下に追加します。<f:verbatim> <iframe height="450" width="850" src="${pageContext.request.contextPath}${bindings['getURI_returnURI'].inputValue}" frameborder="0"> </iframe> </f:verbatim>
SRWelcome.jspx
を実行します。
ようこそページはパブリック・ページであるため、パブリック・ユーザーがgetURI
メソッド(コンテンツ・リポジトリのファイルを表示するために使用)を実行できるように定義する必要があります。
アクセス権限を変更するには、次のようにします。
「bindings」
の下の「getURI1」を右クリックします。
ユーザー権限の設定の詳細は、『Oracle WebCenter Framework開発者ガイド』の「WebCenterアプリケーションの保護」を参照してください。
oracle.SRDemo.......getURI1_return
のanyoneロールに対してinvokeを選択します。
OutputText
によって生成されたURLとともにようこそページが表示されます。Oracle JDeveloperに戻って、「構造」ペインからこのOutputText
を削除します。
SRWelcome.jspx
を実行すると、デフォルトのSRDemoアプリケーションのログイン・ページにリダイレクトされます。作業開始時のバージョンのSRDemoでは、アプリケーション内の認可はJ2EEセキュリティ・ロール・メンバーシップによって実行されます。
J2EEセキュリティは、ロールに基づいてパスを保護します。制約は特定のURLパターンに対して定義され、これらのURLパターンは制約にマップされ、制約はロールにマップされます。たとえば、URLパターンfaces/app/*
を使用可能なロールすべてにマップして、その特定のロールを持つユーザー全員がアプリケーション内のすべてのページにアクセスできようにすることが可能です。アプリケーションが認識するように制約をweb.xml
ファイルに構成できます。たとえば、例5-2に示すように(新しい制約は太字テキストで表示)、managerロールをURLパターンfaces/app/manager/*
にマップする制約を構成できます。
<!-- Security Constraints ================================================== --> <security-constraint> <web-resource-collection> <web-resource-name>J2EE-Secured-Application</web-resource-name> <url-pattern>faces/app/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user</role-name> <role-name>staff</role-name> <role-name>technician</role-name> <role-name>manager</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>J2EE-Secured-Application</web-resource-name> <url-pattern>faces/app/manager/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>manager</role-name> </auth-constraint> </security-constraint>
セキュリティ制約の定義の詳細は、『Oracle WebCenter Framework開発者ガイド』の「WebCenterアプリケーションの保護」を参照してください。
実行時、デプロイメント・ディスクリプタにより、ロールはIDストアにマップされます。ポリシー(どのユーザーがどのロールに属し、何にアクセスできるかの定義)は、JAZN-XMLやJAZN-LDAPなどのJAZNリソース・プロバイダに指定されます。JAZN-XMLは設定をsystem-jazn-data.xml
ファイルに指定し、JAZN-LDAPはOracle Internet Directoryを使用できます。Oracle JDeveloper開発環境では、system-jazn-data.xml
ファイルを使用してこのポリシー情報を格納します(例5-3を参照)。
<role> <name>manager</name> <members> <member> <type>user</type> <name>sking</name> </member> </members> </role>
さらに、式言語をアプリケーション内で使用して、管理者にのみ表示される管理タブのように、特定のメニュー項目を表示/非表示にすることができます。図5-7に、managerロールのメンバーシップに基づいて管理タブを表示または非表示にする方法を示します。
これは内部的にUserInfo
クラスのisManager
関数にマップされます。この関数は、名前付きロールのメンバーシップを特定します(例5-4を参照)。
/** * Function designed to be used from EL for rendering UI Features based on * membership of the "manager" role. * @return boolean */ public boolean isManager() { return (checkIsUserInRole("manager")); }
WebCenterバージョンのSRDemoでは、ロール・メンバーシップではなく、特定のアクションを実行する能力に基づいた、よりきめ細かいセキュリティ・モデルを実装する必要があります。
URLに基づいたJ2EEセキュリティとは異なり、JAASベースのADFセキュリティを使用すると、特定のページに対して異なるアクセス・レベルを実装できます。たとえば、View、CustomizeおよびEditがあります。
ADFセキュリティベースのグローバル・ナビゲーション・リンクをページに追加するには、次の手順を実行します。
「SRWelcome.jspx」
を開きます。
menuButtons
コンポーネントをmenuGlobal
の上にドラッグします。
CommandMenuItems
をページ右上隅のmenuGlobal
ファセットにドラッグします。CommandMenuItems
は、「構造」ペインの該当するノードにドロップしてもかまいません。
commandMenuItem
について、プロパティ・インスペクタで「Text」プロパティを選択し、「データにバインド」アイコンをクリックして式をTextプロパティに追加します(図5-8を参照)。「データにバインド」ダイアログ・ボックスが表示されます。「JSP Objects」
の下の「res」
クラスを開き、srdemo.menu.home
エントリまでスクロール・ダウンします。このエントリを選択し、右矢印をクリックして必要な式言語を表示し、「OK」をクリックします。
commandMenuItem
のActionプロパティをGlobalWelcomeHome
に設定します。 使用する予定の各種スキン用のアイコンは、個々のスキン・イメージ・ディレクトリに格納されており、スキンBean(第4章を参照)を使用して、ELにラップできる現行スキンに関連するディレクトリ構造を返すことができます。
commandMenuItem
のIconプロパティを次のように設定します。
/skins/#{skinBean.currentSkin}/skin_images/home.gif
text="#{skinBean.iconOnly ? null : res['srdemo.menu.home']}"
commandMenuItems
について、同じ手順を繰り返し、次のようにプロパティを設定します。
commandMenuItem
について、Actionプロパティには「GlobalHelp」
を、Textプロパティには「srdemo.menu.help」
を選択します。2つ目のcommandMenuItem
のIconプロパティを次のように設定します。
/skins/#{skinBean.currentSkin}/skin_images/help.gif
commandMenuItem
について、Actionプロパティには「GlobalAbout」
を、Textプロパティには「srdemo.menu.info」
を選択します。3つ目のcommandMenuItem
のIconプロパティを次のように設定します。
/skins/#{skinBean.currentSkin}/skin_images/info.gif
この時点で、「ソース」ビューには、commandMenuItem
定義が例5-5に示すように表示されます。
<af:menuButtons> <af:commandMenuItem text="#{skinBean.iconOnly ? null : res['srdemo.menu.home']}" action="GlobalWelcomeHome" icon="/skins/#{skinBean.currentSkin}/skin_images/home.gif"/> <af:commandMenuItem text="#{skinBean.iconOnly ? null : res['srdemo.menu.help']}" action="GlobalHelp" icon="/skins/#{skinBean.currentSkin}/skin_images/help.gif"/> <af:commandMenuItem text="#{skinBean.iconOnly ? null : res['srdemo.menu.info']}" action="GlobalAbout" icon="/skins/#{skinBean.currentSkin}/skin_images/info.gif"/> </af:menuButtons>
commandMenuItem
の直前に追加します。
text="#{authNLink.label }"
を表示します。この式言語は、この後さらに更新します。
スキンのアイコンにはテキストがすでに含まれているものがあるため、Textプロパティを更新し、次のようにプロパティを設定してラベルを含むアイコンを使用できるようにする必要があります。
text="#{skinBean.iconOnly ? null : authNLink.label }"
destination="#{authNLink.URL}"
/skins/#{skinBean.currentSkin}/skin_images/#{authNLink.icon}
authnLinkは、ユーザーの認証状態を追跡管理し、ログイン/ログアウト・リンクと関連アイコンを自動的に設定するマネージドBeanです。詳細は、『Oracle WebCenter Framework開発者ガイド』の「WebCenterアプリケーションの保護」を参照してください。
infoUser
の上にドラッグします。
JSP Objects/res
の下のsrdemo.connectedUser
にバインドします。
JSF Managed Beans
の下の#{authNLink.authenticated}
にバインドします(この値は、認証ステータスに基づいてtrue
またはfalse
を戻すブールです)。
outputFormat
オブジェクトの上にドラッグし、次のプロパティを設定します。
ようこそページを最終的にパブリックにアクセスできるようにする(ADFセキュリティの構成後)には、認証済または匿名に関係なく(つまり、誰でも使用可能)、すべてのユーザーがページを表示できることを記述したアクセス・ポリシーを定義する必要があります。そのためには、次の手順を実行します。
system-jazn-data.xml
ファイルのanyoneロールに表示権限が追加されます。ADFセキュリティ(次の章で使用できるようにします)によって保護されるアプリケーションでは、各ユーザーは自動的にこの疑似ロールのメンバーになります(anyoneロール・プリンシパルはユーザーのサブジェクトに自動的に追加されます)。そのため、パブリック・ページは、誰でも使用できる特殊なタイプの保護ページです。これは、J2EEセキュリティとは異なります。J2EEセキュリティでは、パブリック・ページに対してセキュリティ制約を指定せずにそのページを定義します。そのため、ADFセキュリティ・モデルでは、パブリック・アクセスに対して保護されているページとセキュリティ保護が実装されていないページは区別されます。
「Webコンテンツ」
→「WEB-INF」
フォルダの「orion-web.xml」
ファイルを右クリックし、「プロパティ」を選択します。「OC4J Webアプリケーション・デプロイメント・ディスクリプタ」ダイアログ・ボックスが表示されます。
この章では、ようこそページを作成し、ポートレットおよびコンテンツ・リポジトリのコンテンツを追加する方法について学びました。また、ページをパブリックに使用できるようにし、資格証明を使用してユーザーが情報にアクセスするためのログイン・リンクを追加する方法についても学びました。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|