ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発
11gリリース1 (11.1.1.8.3)
E49666-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

74 WebCenter Portal Frameworkアプリケーションの保護

この章では、Portal Frameworkアプリケーションで提供されるセキュリティのメカニズムおよび機能について説明し、Oracle ADFセキュリティを使用して認証および認可を処理する方法について紹介します。

この章の内容は、次のとおりです。

74.1 Portal Frameworkアプリケーションのセキュリティの概要

Portal Frameworkアプリケーションは動的であり、カスタマイズやプリファレンスといった形でユーザーからの入力が多く発生するため、柔軟なセキュリティ・モデルが必要になります。WebCenterのセキュリティ・モデルは、従来のJ2EEセキュリティ・モデルではなくADFセキュリティ・モデルに基づいています。ADFセキュリティの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のFusion WebアプリケーションでのADFセキュリティの有効化に関する項を参照してください。

デフォルトでは、Portal Frameworkアプリケーションは、ADFセキュリティで構成されます。デフォルトのユーザー名とパスワード(weblogic/weblogic1)が自動的に作成され、このユーザー名とパスワードの組合せをテスト用にただちに使用できます。ADFセキュリティの構成の詳細は、第74.3項「ADFセキュリティの構成」を参照してください。Portal Frameworkアプリケーションのテンプレートには、デフォルトのログインおよびログアウト・ページも用意されています。

Portal Frameworkアプリケーションには、ロール・マネージャ・タスク・フローとページ階層セキュリティ・エディタという2つのセキュリティ・ツールも用意されています。ロール・マネージャ・タスク・フローでは、ユーザーのロールおよび権限を定義するために事前定義されたランタイム・セキュリティ管理機能が提供されます。ページ階層セキュリティ・エディタを使用すると、継承または委任されたセキュリティ(あるいはその両方)をアプリケーション・ページに迅速に適用できます。この2つのセキュリティ・ツールの詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」および第74.6項「ページ階層セキュリティ・エディタの使用」を参照してください。

74.2 アプリケーション・ロールの作成

次の3つのロールがデフォルトで用意されています。

Administratorロールを使用すると、アプリケーションにナビゲーションとセキュリティを設定して、権限を他のユーザーに委任できます。

AppConnectionManagerおよびAppConnectionViewerは、個々のアプリケーション接続を管理および確認するために定義されているロールです。通常、アプリケーション接続は、Fusion Middleware ControlまたはWLSTコマンドを使用して構成および管理します。ただし、ポートレット・プロデューサおよび外部アプリケーションの接続は、アプリケーションのランタイム管理ページ(個別に実装されている場合はロール・マネージャ・タスク・フロー)を使用して構成できます。これらの接続を管理または確認するには、前述のいずれかのロールに属している必要があります。デフォルトのロールの詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールの理解に関する項を参照してください。

これらのロールのメンバーは、実行時に管理者ページ(個別に実装されている場合はロール・マネージャ・タスク・フロー)を使用して、またはJDeveloperでJAZNエディタを使用して追加できます。管理者は、外部アプリケーションとポートレット・プロデューサの接続を即時構成可能であり、これらの接続を確認できるのは、その他の認証ユーザーのみになります。同様に、アプリケーションにユーザーを追加するには、ADFセキュリティ・ポリシー・エディタで「ユーザー」タブを選択し、追加(+)アイコンをクリックしてユーザー名およびパスワードを指定します。

アプリケーション・ロールを作成するには:

  1. 次のいずれかの方法でADFセキュリティ・ポリシー・エディタにアクセスします。

    • META-INFフォルダの下にある「アプリケーション・リソース」パネルのjazn-data.xmlファイルに移動します。jazn-data.xmlを右クリックし、ポップアップ・メニューから「開く」を選択します。「アプリケーション・ロール」タブを開きます。

    • アプリケーション名を右クリックし、「保護」「アプリケーション・ロール」の順に選択します。

    • 「アプリケーション」メニューから、「保護」「アプリケーション・ロール」の順に選択します。

  2. アプリケーション・ロール・エディタで、追加(+)アイコンをクリックして「新規ロール」を選択します。

  3. 新規ロールの名前、表示名および説明を入力します。

  4. ファイルを保存します。

同様に、アプリケーションにユーザーを追加するには、ADFセキュリティ・ポリシー・エディタで「ユーザー」タブを開き、追加(+)アイコンをクリックしてユーザー名およびパスワードを指定します。

74.3 ADFセキュリティの構成

Portal Frameworkアプリケーション・テンプレートを使用してアプリケーションを作成すると、デフォルトでADFセキュリティが構成されます。この項では、ADFセキュリティの構成ウィザードについて説明します。このウィザードを使用すると、Portal Frameworkアプリケーションのデフォルト設定をオーバーライドできます。また、アプリケーションでPortal Frameworkアプリケーション・テンプレートを使用しない場合についても説明します(アプリケーションの作成時に「標準ポータル機能のアプリケーションの構成」チェック・ボックスを選択しなかった場合など)。この項では、Portal Frameworkアプリケーションの作成の際と、コンポーネントが使用される際に、それぞれ生成される権限付与についても説明します。

この項には次のサブセクションが含まれます:

74.3.1 ADFセキュリティ設定の構成

この項では、ADFセキュリティの構成ウィザードについて説明します。このウィザードを使用すると、Portal Frameworkアプリケーションのデフォルト設定をオーバーライドできます。また、アプリケーションでPortal Frameworkアプリケーション・テンプレートを使用しない場合についても説明します(アプリケーションの作成時に「標準ポータル機能のアプリケーションの構成」チェック・ボックスを選択しなかった場合など)。

ADFセキュリティ設定を構成するには:

  1. ポータル・アプリケーションを開きます。

  2. 次のいずれかの方法でADFセキュリティの構成ウィザードにアクセスします。

    • 「アプリケーション」メニューから、「保護」「ADFセキュリティの構成」の順に選択します。

    • アプリケーション名を右クリックし、「保護」「ADFセキュリティの構成」の順に選択します。

  3. 「ADFセキュリティの有効化」ページで、Portal Frameworkアプリケーションで通常選択される「ADF認証および認可」を選択します。

    図74-1 ADFセキュリティ・ウィザードの「ADFセキュリティ」ページ

    図74-1の説明が続きます
    「図74-1 ADFセキュリティ・ウィザードの「ADFセキュリティ」ページ」の説明

  4. 「次へ」をクリックします。

  5. デフォルトでフォームベース認証が選択されていることに注意してください。

    アプリケーションの保護プロセスを簡単にするには、図74-2に示すように、「フォームベース認証」「デフォルト・ページの生成」オプションを選択します。


    注意:

    Portal Frameworkアプリケーションには、デフォルトでログイン・ページとエラー・ページが用意されています。Portal Frameworkアプリケーション・テンプレートを使用して構築されていないアプリケーションでは、「デフォルト・ページの生成」オプションを選択する必要があります。


    「デフォルト・ページの生成」を選択しない場合は、カスタムのログイン・ページおよびエラー・ページを作成できます。カスタム・ログイン・ページの作成の詳細は、第74.7項「ログイン・ページおよびログイン・コンポーネントの作成」を参照してください。

    図74-2 ADFセキュリティ・ウィザードの認証ページ

    図74-2の説明が続きます
    「図74-2 ADFセキュリティ・ウィザードの認証ページ」の説明

  6. 「次へ」をクリックします。

  7. 「自動ポリシー付与の有効化」ページでは、図74-3に示すように、アプリケーション開発者が最初にADFポリシー付与を定義することなくADFリソースをパブリックにするかどうかを選択します。標準のセキュリティ実装では、「自動付与なし」オプションを選択できます。

    ただし、この場合は、アプリケーション内の各ページに権限を個別に付与する必要があります。

    図74-3 「自動ポリシー付与」ページ

    図74-3の説明が続きます
    「図74-3 「自動ポリシー付与」ページ」の説明

    自動ポリシー付与を有効化すると、すべてのADFリソースに対する表示権限がtest-allアプリケーション・ロールに作成され、publicロールがデフォルト・メンバーになります。このオプションを選択することで、ADF認可で適用されるアクセスの制限がなくなり、アプリケーション・リソースの実行およびテストが容易になります。自動ポリシー付与を無効にして、デフォルトですべてのADFリソースを保護することもできます。

    ADFリソースへのアクセス権を付与するポリシー・ストアを明示的に構成する場合は、「自動付与なし」を選択します。これにより、test-allアプリケーション・ロールへの自動付与が行われなくなります。ただし、アプリケーションでWebCenter Portalのタスク・フローが使用されると、WebCenter拡張機能によりそれらのタスク・フローに適切な権限が自動的に付与され、authenticated-roleロールに表示アクセス権が付与されます。タスク・フローを介して付与される特定の権限の詳細は、第74.3.2項「Portal Frameworkアプリケーションの自動セキュリティ権限付与」を参照してください。


    注意:

    デフォルトでは、タスク・フローにアクセスするために付与される権限は、anonymous-userです。匿名アクセス権はresourceViewerタスク・フローに対しても提供され、これにより、アクティビティ・ストリームまたは検索でデータを検索する際にリソースが表示可能になります。目的の機能に対するパブリックまたは匿名アクセス権がない場合は、anonymous-roleに付与されているすべての権限をauthenticated-roleに移動する必要があります。authenticated-roleに作成された権限はjazn-data.xmlファイルのソース・ビューで表示できます。

    anonymous-roleまたはauthenticated-roleのデフォルトの権限がアプリケーションに対して適切でない場合は、アプリケーションのjazn-data.xmlファイルのソース・ビューを開き、適切なロールに権限をカット・アンド・ペーストすることで変更できます。


    JDeveloperでtest-all(パブリック)アプリケーション・ロールに表示権限を付与し、このポリシーをすべてのアプリケーションの既存のADFタスク・フロー、およびユーザー・インタフェース・プロジェクト内のすべてのWebページに適用する場合は、「既存のオブジェクトのみに付与」を選択します。

    JDeveloperでtest-allアプリケーション・ロールに表示権限を付与し、このポリシーをすべてのADFタスク・フロー、および開発者がユーザー・インタフェース・プロジェクトで作成するWebページに適用する場合は、「すべてのオブジェクトに付与」を選択します。ウィザードの初回実行時には、「すべてのオブジェクトに付与」オプションが表示されることに注意してください。それ以降は、ウィザードの各実行時に「新規オブジェクトに付与」オプションが表示されます。

  8. 「次へ」をクリックします。

  9. 必要に応じて、認証時に特定のようこそページを表示する場合は、図74-4に示すように「認証の成功時にリダイレクト」オプションを選択します。

    カスタムのようこそページを作成することも、ウィザードでデフォルトのようこそページを作成することもできます。プロセスを簡単にするには、「デフォルトの生成」を選択します。

    図74-4 「認証されたようこそページを指定」

    図74-4の説明が続きます
    「図74-4 「認証されたようこそページを指定」」の説明

  10. 図74-5に示すような「サマリー」ページが開きます。

    図74-5 「サマリー」ページ

    図74-5の説明が続きます
    「図74-5 「サマリー」ページ」の説明

  11. 「終了」をクリックします。

    操作の完了に時間がかかる場合があります。

  12. 「セキュリティ・インフラストラクチャが作成されました」ダイアログで、「OK」をクリックします。

74.3.2 Portal Frameworkアプリケーションの自動セキュリティ権限付与

表74-1は、標準のポータル機能で構成されたPortal Frameworkアプリケーションで自動的に付与されるセキュリティの権限を示しています。


注意:

アプリケーションへのパブリックまたは匿名アクセス権を持っていない場合は、現在anonymous-roleに与えられている権限は、次のWLSTコマンドを使用して除去することができます。

revokePermission(appStripe="papp1#V2.0",principalClass=
"oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl",
principalName="anonymous-role",
permClass="oracle.adf.controller.security.TaskFlowPermission",
permActions="view", permTarget="/oracle/webcenter/.*")

表74-1 Portal Frameworkアプリケーションの自動セキュリティ権限付与

ロール 付与 アクション リソース名

anonymous-role

TaskflowPermission

表示

/oracle/webcenter/siteresources/scopedMD/.*

/oracle/webcenter/portalapp/.*

/oracle/webcenter/navigationtaskflows/view/pagebreadcrumb-definition.xml#pagebreadcrumb-definition

/oracle/webcenter/navigationtaskflows/view/pagemenu-definition.xml#pagemenu-definition

/oracle/webcenter/navigationtaskflows/view/pagetree-definition.xml#pagetree-definition

/oracle/webcenter/navigationtaskflows/view/.*

/oracle/webcenter/.*


RegionPermission

表示

oracle.webcenter.siteresources.scopedMD.*

oracle.webcenter.taskflow.view.ContainerPageDef

oracle.webcenter.taskflow.view.ViewerPageDef

oracle.webcenter.taskflowstyle.view.PreviewPageDef

oracle.webcenter.page.pstemplates.*

oracle.webcenter.portalapp.pagetemplates.*

oracle.webcenter.portalapp.pages.loginPageDef

oracle.webcenter.portalapp.pages.errorPageDef

oracle.webcenter.portalapp.pages.navigation_rendererPageDef


HierarchicalResource権限

表示

serviceID=oracle.webcenter.page,scopeID=s8bba98ff_4cbb_40b8_beee_296c916a23ed,resourceID=s8bba98ff_4cbb_40b8_beee_296c916a23ed

authenticated-role

RegionPermission

表示

oracle.webcenter.portalwebapp.pages.adminPageDef

oracle.webcenter.collab.*

oracle.webcenter.doclib.*

oracle.webcenter.tagging.*


RegionPermission

付与

oracle.webcenter.taskflow.view.ContainerPageDef


HierarchicalResourcePermission

パーソナライズ、表示

serviceID=oracle.webcenter.page,scopeID=s8bba98ff_4cbb_40b8_beee_296c916a23ed,resourceID=s8bba98ff_4cbb_40b8_beee_296c916a23ed


CatalogPermission

作成、編集

/oracle/webcenter/quicklinks/scopedMD/.*

管理者

HierarchicalResourcePermission

作成、削除、権限付与、管理、パーソナライズ、更新、表示

serviceID=oracle.webcenter.page,scopeID=s8bba98ff_4cbb_40b8_beee_296c916a23ed,resourceID=s8bba98ff_4cbb_40b8_beee_296c916a23ed


WebCenterResourcePermission

管理

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_contentpresenter_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_datacontrol_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_navigation_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_pagestyle_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_catalog_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_pagetemplate_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_skin_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_taskflow_.*

oracle_webcenter_siteresource_s8bba98ff_4cbb_40b8_beee_296c916a23ed_taskflowstyle_.*


表74-2はサービスの使用時に付与される権限を示しています。サービスは、当該サービスに属しているコンポーネント(コンポーネント・パレットから)またはタスク・フロー(リソース・パレットから)がページに追加されるたびに使用されます。

jazn-data.xmlファイルに自動的に追加されます。それらの権限はADFセキュリティ・ポリシー・エディタで確認および編集できます。詳細は、第74.3.1項「ADFセキュリティ設定の構成」を参照してください。


注意:

Portal Frameworkアプリケーションが作成されるとき、次の要素

<name>resource=MyApplicationName</name>

(MyApplicationNameは作成したアプリケーションの名前)が、jazn-data.xmlファイルに追加されます。jazn-data.xmlファイルを変更する場合は、そのアプリケーション名がjazn-data.xmlファイルの<policy-store>要素にあるアプリケーション名と一致するようにしてください。このアプリケーション名が一致しないと、WSセキュリティ・アイデンティティ伝播に依存するすべての機能が動作しなくなります。


アプリケーションに対してADFセキュリティが構成されていない場合、これらの権限は追加されませんが、後からセキュリティが構成された場合は、アプリケーションで使用されているすべてのコンポーネントに権限が追加されます。一般的な権限は、どのWebCenter Portalサービスを使用した場合でも必ず付与されます。

表74-2 Portal Frameworkアプリケーションの自動セキュリティ権限付与

サービス ロール 付与 アクション リソース名

共通

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/framework/service/controller/taskflows/resourceViewer.xml#resourceViewer

/oracle/webcenter/security/peoplepicker/jsf/taskflows/peoplepicker.xml#peoplepicker

/oracle/webcenter/peopleconnections/personalweb/view/jsf/regions/profile-gallery.xml#profile-gallery

/oracle/webcenter/peopleconnections/profile/view/jsf/regions/extended/extended-profile.xml#extended-profile

/oracle/webcenter/peopleconnections/view/jsf/regions/profile-snapshot.xml#profile-snapshot

/oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-main-view-taskflow.xml#connections-main-view-taskflow

/oracle/webcenter/peopleconnections/connections/controller/taskflows/connections-mini-view-taskflow.xml#connections-mini-view-taskflow

/oracle/webcenter/peopleconnections/connections/controller/taskflows/table-of-connections-taskflow.xml#table-of-connections-taskflow

/oracle/webcenter/peopleconnections/wall/controller/taskflows/WallDetailViewer.xml#WallDetailViewer

/oracle/webcenter/peopleconnections/wall/controller/taskflows/WallViewer.xml#WallViewer

/oracle/webcenter/peopleconnections/kudos/controller/taskflows/KudosDetailViewer.xml#KudosDetailViewer

/oracle/webcenter/peopleconnections/kudos/controller/taskflows/KudosMiniViewer.xml#KudosMiniViewer

/oracle/webcenter/activitystreaming/controller/taskflows/activity-streaming-mainview.xml#activity-streaming-mainview

/oracle/webcenter/activitystreaming/controller/taskflows/activity-streaming-miniview.xml#activity-streaming-miniview

/oracle/webcenter/peopleconnections/.*

/oracle/webcenter/activitystreaming/.*


authenticated-role

Region権限

表示

oracle.webcenter.security.peoplepicker.pageDefs.oracle_webcenter_security_peoplepicker_jsf_pages_PeoplePickerPagePageDef


authenticated-role

CustomPage権限

表示

oracle.webcenter.framework.service.view.pageDefs.resourceExternalPageDef


authenticated-role

Profile権限

編集、共有、ビュー

/oracle/webcenter/peopleconnections/profile/s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*


管理者

WCApp権限

管理

application


管理者

Profile権限

管理

/oracle/webcenter/peopleconnections/profile/s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*

お知らせ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/collab/announcement/view/taskflows/main-view-definition.xml#announcement-main-view

/oracle/webcenter/collab/announcement/view/taskflows/mini-view-definition.xml#announcement-mini-view

/oracle/webcenter/collab/announcement/view/taskflows/link-existing-view-definition.xml#link-existing-view-definition

/oracle/webcenter/collab/announcement/view/taskflows/config-view-definition.xml#announcement-config-view

/oracle/webcenter/collab/announcement/view/taskflows/announcement-view-definition.xml#announcement-resource-view

/oracle/webcenter/collab/announcement/view/taskflows/.*


authenticated-role

Region権限

表示

oracle.webcenter.collab.announcement.view.pageDefs.oracle_webcenter_collab_announcement_view_jsf_pages_AnnouncementLinkExistingViewPageDef

oracle.webcenter.collab.announcement.view.pageDefs.oracle_webcenter_collab_announcement_view_jsf_pages_AnnouncementLinkResourceViewPageDef

コンポーザ

anonymous-role

Taskflow権限

表示

/oracle/adfinternal/pageeditor/.*

ディスカッション

anonymous-role

Taskflow権限

表示

/oracle/webcenter/collab/forum/view/taskflows/main-task-flow.xml#forum-main

/oracle/webcenter/collab/forum/view/taskflows/miniview-task-flow.xml#forum-miniview

/oracle/webcenter/collab/forum/view/taskflows/popularTopic-task-flow.xml#forum-popularTopic

/oracle/webcenter/collab/forum/view/taskflows/recentTopic-task-flow.xml#forum-recentTopic

/oracle/webcenter/collab/forum/view/taskflows/watchedTopic-task-flow.xml#forum-watchedTopic

/oracle/webcenter/collab/forum/view/taskflows/watchedForum-task-flow.xml#forum-watchedForum

/oracle/webcenter/collab/forum/view/taskflows/config-task-flow.xml#forum-config-view

/oracle/webcenter/collab/forum/view/taskflows/link-existing-task-flow.xml#forum-link-existing

/oracle/webcenter/collab/forum/view/taskflows/link-new-task-flow.xml#forum-link-new

/oracle/webcenter/collab/forum/view/taskflows/message-task-flow.xml#forum-message

/oracle/webcenter/collab/forum/view/taskflows/resource-view-task-flow.xml#forum-resource-view

/oracle/webcenter/collab/forum/view/taskflows/scope-config-task-flow.xml#forum-scope-config-view

/oracle/webcenter/collab/forum/view/taskflows/.*


authenticated-role

Region権限

表示

oracle.webcenter.collab.forum.view.pageDefs.oracle_webcenter_collab_forum_view_jsf_pages_ForumLinkExistingViewPageDef

oracle.webcenter.collab.forum.view.pageDefs.oracle_webcenter_collab_forum_view_jsf_pages_ForumLinkNewViewPageDef

oracle.webcenter.collab.forum.view.pageDefs.oracle_webcenter_collab_forum_view_jsf_pages_ForumLinkResourceViewPageDef

ドキュメント

anonymous-role

Taskflow権限

表示

/oracle/webcenter/doclib/view/jsf/taskflows/presenter/contentPresenter.xml#doclib-content-presenter

/oracle/webcenter/doclib/view/jsf/taskflows/docListViewer.xml#doclib-document-list-viewer

/oracle/webcenter/doclib/view/jsf/taskflows/docViewer/docInfo.xml#doclib-document-information

/oracle/webcenter/doclib/view/jsf/taskflows/explore/explorer.xml#doclib-explorer

/oracle/webcenter/doclib/view/jsf/taskflows/treeNav/treeNavigator.xml#doclib-navigator

/oracle/webcenter/doclib/view/jsf/taskflows/docViewer/documentViewer.xml#doclib-document-viewer

/oracle/webcenter/doclib/view/jsf/taskflows/folderViewer/folderView.xml#doclib-folder-viewer

/oracle/webcenter/doclib/view/jsf/taskflows/mainView.xml#doclib-document-library

/oracle/webcenter/doclib/view/jsf/taskflows/miniProperties/miniProperties.xml#doclib-mini-properties

/oracle/webcenter/doclib/view/jsf/taskflows/recentDocuments.xml#doclib-recent-documents

/oracle/webcenter/doclib/view/jsf/taskflows/richTextEditor/editor.xml#doclib-richtext-editor

/oracle/webcenter/doclib/view/jsf/taskflows/upload/uploader.xml#doclib-upload-document

/oracle/webcenter/doclib/view/jsf/taskflows/versionHistory/history.xml#doclib-version-history

/oracle/webcenter/blog/view/jsf/taskflows/blogDigestViewer/blog-main-view.xml#blog-main-view

/oracle/webcenter/doclib/view/jsf/taskflows/.*

/oracle/webcenter/blog/view/jsf/taskflows/.*


authenticated-role

Region権限

表示

oracle.webcenter.doclib.view.jsf.*

oracle.webcenter.blog.view.jsf.*

外部アプリケーション

anonymous-role

Taskflow権限

表示

/oracle/adfinternal/extapp/view/fragments/extapp-credential-provisioning-taskflow.xml#extapp-credential-provisioning-taskflow

/oracle/adfinternal/extapp/view/fragments/extapp-change-password-taskflow.xml#extapp-change-password-taskflow

リンク

anonymous-role

Taskflow権限

表示

/oracle/webcenter/relationship/view/jsf/resources/links-detail.xml#links-detail

/oracle/webcenter/relationship/view/jsf/resources/links-detail-popup.xml#links-detail-popup

/oracle/webcenter/relationship/view/jsf/resources/links-to-service.xml#link-to-service

/oracle/webcenter/relationship/view/jsf/resources/links-picker-popup.xml#links-picker-popup

/oracle/webcenter/relationship/url/view/jsf/taskflows/linkToUrl.xml#link-to-url


管理者

Relationship権限

管理

*s8bba98ff_4cbb_40b8_beee_296c916a23ed/.*

リスト

anonymous-role

Taskflow権限

表示

/oracle/webcenter/list/view/jsf/regions/main-view-task-flow.xml#main-view-task-flow

/oracle/webcenter/list/view/jsf/regions/list-instance-view-task-flow.xml#list-instance-view-task-flow

/oracle/webcenter/list/view/jsf/regions/.*


authenticated-role

Region権限

表示

/oracle/webcenter/list/templates/lists/.*


管理者

List権限

表示

/oracle/webcenter/list/scopedMD/s8bba98ff_4cbb_40b8_beee_296c916a23ed/lists/.*

メール

anonymous-role

Taskflow権限

表示

/oracle/webcenter/collab/mail/view/jsf/regions/compose-task-flow.xml#mail-compose-view

/oracle/webcenter/collab/mail/view/jsf/regions/content-view-definition.xml#mail-content-view

/oracle/webcenter/collab/mail/view/jsf/regions/dl-config-definition.xml#dl-config-view

/oracle/webcenter/collab/mail/view/jsf/regions/mini-view-definition.xml#mail-mini-view

/oracle/webcenter/collab/mail/view/jsf/regions/.*


authenticated-role

Region権限

表示

oracle.webcenter.collab.mail.view.pageDefs.oracle_webcenter_collab_mail_view_jsf_pages_ComposeviewPageDef

oracle.webcenter.collab.mail.view.pageDefs.oracle_webcenter_collab_mail_view_jsf_pages_ContentViewPageDef

通知

anonymous-role

Taskflow権限

表示

/oracle/webcenter/notification/view/jsf/regions/SubscriptionPreferences.xml#SubscriptionPreferences

/oracle/webcenter/notification/view/jsf/regions/SubscriptionsViewer.xml#SubscriptionsViewer

ページ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/page/view/jsf/fragments/page-create-page.xml#page-create-page

/oracle/webcenter/page/view/jsf/fragments/page-doc-prop-panel-definition.xml#page-doc-prop-panel-definition

/oracle/webcenter/page/view/jsf/fragments/page-doc-sec-panel-definition.xml#page-doc-sec-panel-definition

/oracle/webcenter/page/view/jsf/fragments/golink-prop-panel-definition.xml#golink-prop-panel-definition


authenticated-role

Region権限

作成

oracle_webcenter_page_scopedMD_s8bba98ff_4cbb_40b8_beee_296c916a23ed_.*


管理者

Region権限

カスタマイズ、編集、権限付与、パーソナライズ、表示

oracle_webcenter_page_scopedMD_s8bba98ff_4cbb_40b8_beee_296c916a23ed_.*

投票

anonymous-role

Taskflow権限

表示

/oracle/webcenter/collab/survey/view/jsf/taskflows/list-surveys-definition.xml#list-surveys

/oracle/webcenter/collab/survey/view/jsf/taskflows/take-survey-definition.xml#take-survey

/oracle/webcenter/collab/survey/view/jsf/taskflows/quick-poll-definition.xml#quick-poll

/oracle/webcenter/collab/survey/view/jsf/taskflows/view-results-definition.xml#view-results

/oracle/webcenter/collab/survey/view/jsf/taskflows/take-polls-definition.xml#take-polls

/oracle/webcenter/collab/survey/view/jsf/taskflows/empty-definition.xml#empty-definition

/oracle/webcenter/collab/survey/view/jsf/taskflows/.*

最近のアクティビティ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/recentactivity/controller/taskflows/recent-activities.xml#recent-activities

/oracle/webcenter/recentactivity/controller/taskflows/.*

RSS

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/rssviewer/view/jsf/fragments/RSSViewerTaskFlow.xml#RSSViewerTaskFlow

/oracle/webcenter/rssviewer/view/jsf/fragments/.*

検索

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/search/controller/taskflows/searchResults.xml#search-view

/oracle/webcenter/search/controller/taskflows/localToolbarSearch.xml#search-toolbar

/oracle/webcenter/search/controller/taskflows/preferences.xml#search-preferences

/oracle/webcenter/search/controller/taskflows/allSavedSearches.xml#all-saved-searches

/oracle/webcenter/search/controller/taskflows/simpleSearchResults.xml#search-simple-view

/oracle/webcenter/search/controller/taskflows/customize.xml#search-customize

/oracle/webcenter/search/controller/taskflows/.*

タグ

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/tagging/controller/taskflows/related-links.xml#tagging-related-links

/oracle/webcenter/tagging/controller/taskflows/launch-dialog.xml#tagging-launch-dialog

/oracle/webcenter/tagging/controller/taskflows/tagging-personal-view.xml#tagging-personal-view

/oracle/webcenter/tagging/controller/taskflows/tag-selection.xml#tag-selection

/oracle/webcenter/tagging/controller/taskflows/related-resources.xml#related-resources

/oracle/webcenter/tagging/controller/taskflows/tag-center-task-flow.xml#tag-center

/oracle/webcenter/tagging/controller/taskflows/tag-center-related-tags.xml#tag-center-related-tags

/oracle/webcenter/tagging/controller/taskflows/tag-center-related-users.xml#tag-center-related-users


authenticated-role

Region権限

表示

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_launch_dialogPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_centerPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_related_resourcesPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_related_tagsPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_related_usersPageDef

oracle.webcenter.tagging.view.pageDefs.oracle_webcenter_tagging_view_jsf_fragments_tag_center_tag_selectionPageDef

ワークリスト

anonymous-role

TaskFlow権限

表示

/oracle/webcenter/worklist/view/jsf/taskFlowDefs/worklist.xml#worklist

/oracle/webcenter/worklist/view/jsf/taskFlowDefs/.*


74.4 ロール・マネージャ・タスク・フローの使用

ロール・マネージャ・タスク・フローを使用すると、管理者は、アプリケーション・ロールおよびそのメンバーシップ、さらにそのロールに関連付けられたサービス権限を管理できます。ロール・マネージャ・タスク・フローは事前に構成されており、Portal Frameworkアプリケーション・テンプレートを使用して作成されたアプリケーションのランタイム管理ページの「セキュリティ」タブから使用できます。ロール・マネージャのランタイムを使用して、ユーザー・ロールおよびアプリケーション・ロールを管理する方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のユーザー・ロールおよびアプリケーション・ロールの管理に関する項を参照してください。

カスタマイズが更新中に上書きされることを防ぐために、管理ページのソースをカスタマイズしないでください。ただし、デフォルトの管理ページが十分でない場合は、自身の管理ページを書くことも選択できます。この場合、アプリケーションのランタイム・セキュリティ管理の一部としてロール・マネージャ・タスク・フローを使用することができます。次の手順に従ってJSFまたはJSPページを追加し、アプリケーションにそれを含めてください。

Portal Frameworkアプリケーションに、ロール・マネージャ・タスク・フローを追加するには:

  1. アプリケーション・タイプとしてPortal Frameworkアプリケーションを選択し、新規アプリケーションを作成します。

  2. 必要な可能性のあるすべてのプロジェクト・テクノロジ・ライブラリを追加して、アプリケーションを作成します。「標準ポータル機能のアプリケーションの構成」チェック・ボックスは選択解除しないでください。

  3. 新しいJSFページまたはJSPページを作成します。

  4. 「リソース・パレット」で「WebCenter Portal - サービス・カタログ」を開き、「タスク・フロー」のリストからSecurity - Role Managerタスク・フローを選択します。

    図74-6 「リソース・パレット」 - 「WebCenter Portal - サービス・カタログ」

    図74-6の説明が続きます
    「図74-6 「リソース・パレット」 - 「WebCenter Portal - サービス・カタログ」」の説明

  5. 「ロール・マネージャ」タスク・フローをドラッグし、リージョンとして作成したページにドロップします。

    図74-7 ロール・マネージャ・タスク・フロー

    図74-7の説明が続きます
    「図74-7 ロール・マネージャ・タスク・フロー」の説明

  6. アプリケーションを作成して管理者としてログインし、ロール・マネージャ・タスク・フローを含むページに移動します。

74.5 エンタープライズ・ロール・メンバー・タスク・フローの使用

エンタープライズ・ロール・メンバー・タスク・フローでは、ロール・マネージャ・タスク・フローに追加のタスク・フローが提供され、それをページに追加することでエンタープライズ・ユーザーおよびエンタープライズ・ロールを監視できるようになります。ロールおよびユーザーの両方がメンバーとしてツリー構造で表示されます。ロールを開くと、そのメンバーが表示されます。

タスク・フローを追加するには、ロール・マネージャ・タスク・フローと同じ手順(第74.4項「ロール・マネージャ・タスク・フローの使用」を参照)を実行し、タスク・フローを次のいずれかに置き換えます。すべてのエンタープライズ・ロール・メンバー・タスク・フローが、単一の必須パラメータ(エンタープライズ・ロール名)を取ることに注意してください。

74.6 ページ階層セキュリティ・エディタの使用

この項では、継承または委任されたセキュリティを、Portal Frameworkアプリケーション・ページに提供する、ページ階層セキュリティの使用方法について説明します。次の項が含まれます:

74.6.1 ページ階層セキュリティの概要

この項では、ページ階層モデルと、Portal Frameworkアプリケーション内でのページ階層セキュリティの動作について説明します。

この項には次のサブセクションが含まれます:

74.6.1.1 ページ階層モデル

ページ階層には、階層のルートに設定されたデフォルトのセキュリティ・ポリシーがあります。明示的にオーバーライドされないかぎり、このポリシーは下にあるすべてのページに適用されます。階層内のページでは、継承されたポリシーが新しいポリシーでオーバーライドされることがあり、それによって従属ページの委任管理およびポリシー変更が可能になります。あるページのポリシーがオーバーライドされると、そのページの子はデフォルトで新しいポリシーを継承します。特定のノードで確立されるポリシーは、そのページで各権限受領者およびその子(存在する場合)が持つ権限を示したリストになります。

Frameworkアプリケーションを作成すると、ページ階層のルート・ノードを含むデフォルトのナビゲーション・モデルが作成されます。これら2つの構造は、アプリケーションのページにナビゲーション・フローおよびセキュアなアクセスを提供するために、単独および一元的に機能します。図74-8は、デフォルトのナビゲーション・モデル(default-navigation-model.xml)を示しています。このモデルには、デフォルトのページ階層のノードが含まれています(pages.xml)。

図74-8 デフォルトのナビゲーション・モデル

図74-8の説明が続きます
「図74-8 デフォルトのナビゲーション・モデル」の説明

たとえば、追加のナビゲーション·モデルを追加すると、特定のユーザー・グループに異なる​​ナビゲーション・ビューを提供することができます。各ナビゲーションには、よりきめ細かなナビゲーションおよびセキュリティ・モデルを提供するために1つ以上のページ階層ノードを追加することができます。新しいナビゲーション・モデルの作成の詳細は、第10.2項「ナビゲーション・モデルの作成」を参照してください。ページ階層をナビゲーションに追加する方法の詳細は第10.3.5項「その他のリソースをナビゲーション・モデルに追加する方法」を参照してください。

アプリケーション内にページ階層が1つしかない場合でも、その階層内の任意のノードをナビゲーション・モデルのルート・ノードとして使用できます。たとえば、Human Resources、Support、Sales、Administrationなどの上位レベル・ノードを含むページ階層があるとします。これらの各ノードをナビゲーション・モデルに個別に追加することで、ページ階層の特定のセクションにのみにナビゲーションを作成することができます。

図74-9 ページ階層のルート・ノードの権限

図74-9の説明が続きます
「図74-9 ページ階層のルート・ノードの権限」の説明

図74-9は、ページ階層のルート・ノードおよび関連する権限を示しています。ルート・ノードを起点にページを追加またはドラッグすることでページ階層を構築できます。管理権限はルート・ノード上で管理者に対してのみ表示されることに注意してください。これにより管理者は、セキュリティを委任できるだけでなく、セキュリティがオーバーライドされているかどうかに関係なく階層内のすべてのページにアクセスできます。つまり、ルート・ノード上で管理権限を持つユーザーはスーパー管理者であり、階層全体のすべてのページにアクセスできます。

74.6.1.2 ページ・レベルのセキュリティおよびページ階層セキュリティ

ページ階層では、Portal Frameworkアプリケーションのページ・レベルのセキュリティに代替のセキュリティ・メカニズムが提供されます。アプリケーションにページを追加する場合、そのページをページ階層に含めなくてもセキュリティを提供することは可能ですが、ページ階層を使用すれば、大規模サイトのコンテンツなどをより便利に管理しやすい方法で保護することができます。階層のルート・ノードまたはホーム・ノードに階層ノードを追加し、そこにページをドラッグ・アンド・ドロップするだけで、そのページにすばやく基本的なセキュリティを提供できます。


注意:

ページ・レベルのセキュリティとページ階層セキュリティは共存できますが、その両方を同じページに適用することはできません。ページを階層ノードに追加する場合は、以前のページ・レベルの権限がすべて消去されることにも注意してください。


74.6.1.3 継承および委任されるセキュリティ

ページ階層モデルでは、カスケード型のロール・ベース・セキュリティを提供するノード構造が使用されており、ここでは、各子ノードが親のセキュリティ権限を継承します。ページをノードに追加することで、アプリケーション・ページのセキュリティを迅速に構成できます。

特定のノードでアクションを実行するには、そのノードで必要な権限、またはセキュリティを委任(オーバーライド)している直接の親で必要な権限を所有している必要があります。ただし、ページを表示するには、そのルート・ページまでの階層権限上にある全ページの表示アクセス権が必要です。

ノードの親から継承される基本的なセキュリティに加えて、委任セキュリティを子ノードに適用することで、本来継承されるセキュリティを制限またはオーバーライドすることもできます。ページ階層セキュリティのこのような機能の詳細は、第74.6.2項「ページ階層の構築」を参照してください。


注意:

継承セキュリティは、最初に管理者によってのみ移入可能なルート・ノードを介してカスケードされます。他のユーザーによる権限の作成および委任を可能にするには、まず管理者がそれらの権限を委任する必要があります。どのような場合でも、権限はツリー内で下位にカスケードされます(つまり、ユーザーは親ノードの設定を変更できません)。また、ユーザーが他のユーザーに委任できるのは、自身の権限またはその権限のサブセットのみになります。


74.6.2 ページ階層の構築

この項では、ページ階層セキュリティを使用して親ページのロール・ベース・セキュリティ設定を子ページに自動的にカスケードする方法と、各ページ・ノードにおけるセキュリティの委任方法について説明します。

この項には次のサブセクションが含まれます:

74.6.2.1 ナビゲーションへのページ階層の追加

デフォルトのナビゲーション・モデルのデフォルトのページ階層に加えて、ページ階層ノードをデフォルトのページ階層からアプリケーション内のナビゲーションにルート・ノードとして追加できます。ナビゲーションへのページ階層の追加の詳細は、第10.3.5項「その他のリソースをナビゲーション・モデルに追加する方法」を参照してください。

74.6.2.2 ページ階層へのページの追加

この項では、JSFページまたはJSPページをページ階層に追加する方法について説明します。


注意:

継承セキュリティ・モデルの競合の問題を回避するため、1つのページがページ階層内で表示されるのは1回のみです。


JSFページまたはJSPページをページ階層に追加するには:

  1. 次のいずれかの方法を使用して、JDeveloperでページ階層エディタを開きます。

    • /oracle/webcenter/portalapp/pagehierarchyフォルダを右クリックします

      または

    • /oracle/webcenter/portalappの下にあるいずれかの.jspxページを右クリックして、ポップアップ・メニューから「ページ階層の編集」を選択します

  2. ページを追加するノードを選択して、次のいずれかを実行します。

    • 「ページの追加」アイコンをクリックし、ブラウザでページを見つけて追加します

      または

    • 適切なノードの下にあるナビゲーションからページをドラッグ・アンド・ドロップします

  3. 必要に応じて、さらにページを追加するか、「ページの削除」アイコンを使用して不要なページを削除します。

74.6.2.3 セキュリティの委任

この項では、ノードおよびその子ページの権限を委任することで継承セキュリティをオーバーライドする方法について説明します。ページのセキュリティは、ランタイム管理ページを使用して委任することもできます。ランタイム管理ページを使用したセキュリティの委任の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールおよび権限の管理に関する項を参照してください。

委任されたセキュリティで継承セキュリティをオーバーライドするには:

  1. JDeveloperでページ階層(pages.xml)を開きます。

  2. 継承セキュリティのオーバーライドを開始するノードを選択します。

  3. 「表示」チェック・ボックスを選択または選択解除して、ページまたはリソースを表示するかどうかを指定します。すべてのユーザーに常にリソースを表示するには、このチェック・ボックスを選択します。すべてのユーザーで常にリソースを非表示にするには、このチェック・ボックスの選択を解除します。

  4. 「セキュリティの委譲」を選択します。

    委任するセキュリティの「セキュリティ」オプションが表示されます(図74-10を参照)。

    図74-10 「ページ階層」 - 「セキュリティの委譲」

    図74-10の説明が続きます
    「図74-10 「ページ階層」 - 「セキュリティの委譲」」の説明

  5. このページおよびその子ページのロールの権限を選択または選択解除します。

  6. 使用可能な他のユーザー・ロールの権限を指定するには、追加アイコン(+)をクリックして必要なロールを選択します。表内にそのロールの新しい行が作成されます。既存ロールの権限を削除するには、表内の該当する行を選択し、削除アイコン(X)をクリックします。


    注意:

    「追加」リスト内のロール名は、アプリケーションのポリシー・ストアで定義されているアプリケーション・ロールに対応します。セキュリティの委任は、設計時にアプリケーション・ロールに対してのみ実行できます。ただし、Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールおよび権限の管理に関する項で説明しているように、ユーザー・ロールおよびエンタープライズ・ロールはランタイム管理ページを使用して実行時に追加できます。


74.7 ログイン・ページおよびログイン・コンポーネントの作成

ログイン・リンクやログアウト・リンクをパブリックのようこそページ、またはログイン・バッキングBean (LoginBackingBean)を使用して他のページに追加して、アプリケーション使用中にログインおよびログアウトをユーザーが明示的に行えるようにします。Beanは、ログインおよびログアウトをするためにユーザーが使用できるメソッドを提供します。

このBeanを使用するには、次の手順に従って、単一のページを作成し、それをログインおよびログアウトを実行するためのBeanにバインドします。

  1. JSFページを作成します。

  2. LoginBackingBeanfaces-config.xmlファイルまたはtaskflow.xmlファイルに追加します。

  3. ユーザー名、パスワード、ログイン・リンクおよびログアウト・リンクを指定してページを作成します。

  4. そのユーザー名とパスワードを、Beanのユーザー名とパスワードにバインドします。

  5. 次の例に示すように、ログイン・リンクおよびログアウト・リンクをそれぞれdoLoginメソッドおよびdoLogoutメソッドにマップします。

               <af:subform id="pt_sf1" defaultCommand="pt_logincb"
                              rendered="#{attrs.showLogin and !securityContext.authenticated}">
                    <af:panelFormLayout id="pt_pfl1">
                      <af:panelLabelAndMessage id="pt_plam1" label="User Name"
                                               styleClass="NoLabelWrap"
                                               labelStyle="font-size:small;color:white;">
                        <af:inputText id="pt_it1" simple="true"
                                      value="#{o_w_s_l_LoginBackingBean.userName}"
                                      columns="15"/>
                      </af:panelLabelAndMessage>
                      <af:panelLabelAndMessage id="pt_plam2" label="Password"
                                               styleClass="NoLabelWrap"
                                               labelStyle="font-size:small;color:white;">
                        <af:inputText id="pt_it2" simple="true"
                                      value="#{o_w_s_l_LoginBackingBean.password}"
                                      columns="15" secret="true"/>
                      </af:panelLabelAndMessage>
                    </af:panelFormLayout>
                    <af:spacer width="3" height="3" id="pt_s2"/>
                    <af:panelGroupLayout id="pt_pgl14" layout="horizontal"
                                         halign="end">
                      <af:commandLink id="pt_logincb" text="Login"
                                      action="#{o_w_s_l_LoginBackingBean.doLogin}"
                                      inlineStyle="font-size:small;color:white;"/>
                      <af:spacer id="pt_s3" width="5px"/>
                    </af:panelGroupLayout>
                  </af:subform>
    

    ログイン・メソッドおよびログアウト・メソッドは、アクションにマップして、ログインおよびログアウト後にfaces-config.xmlのナビゲーション・ルールで使用可能な値を戻します。faces-config.xml内の次のエントリは、Portal Frameworkアプリケーションにおいてデフォルトで生成されます。

      <navigation-rule>
        <from-view-id>*</from-view-id>
        <navigation-case>
          <from-outcome>login_success</from-outcome>
          <to-view-id>/pages_home</to-view-id>
          <redirect/>
        </navigation-case>
        <navigation-case>
          <from-outcome>logout_success</from-outcome>
          <to-view-id>/pages_home</to-view-id>
          <redirect/>
        </navigation-case>
      </navigation-rule>
    

    これにより、ログインおよびログアウト後の移動先が定義されます(この例では、いずれの場合もホーム・ページに移動します)。この動作を変更するには、faces-config.xml内でこれらのルールを変更して、たとえば、ユーザーを別のページにリダイレクトするようにします。

    faces-config.xmlファイルで使用できる他の構成要素のリファレンスは、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADF Faces構成に関する項を参照してください。

74.8 ログイン・ポートレットの作成

アプリケーションのログイン・ポートレットの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

74.9 ログイン・ページへのポートレットの追加

アプリケーションにADF Facesベースのログイン・ページを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。この項では、そのようなログイン・ページにポートレットを追加することで、Frameworkアプリケーションの他のページと同じような外観のログイン・ページを作成します。

続行前に、ポートレット・プロデューサが登録されていることを確認します。詳細は、第63章「ポートレットの消費」を参照してください。

ポートレットをログイン・ページに追加するには、次の手順を実行します:

  1. ログイン・ページに追加した最初のcust:panelCustomizableタグ内のh:formタグに、PanelCustomizableをドラッグします。

  2. コンポーネント・パレットから、リッチ・テキスト・ポートレット・プロデューサを選択し、リストからリッチ・テキスト・ポートレットを選択して「PanelCustomizable」コンポーネントの上にドラッグします。

  3. コンポーネント・パレットから、「ADF Faces Core」を選択し、「ObjectSeparator」をリッチ・テキスト・ポートレットの下の「PanelCustomizable」コンポーネントの上にドラッグします。

  4. コンポーネント・パレットから、OmniPortletプロデューサを選択し、リストからOmniPortletを選択して「PanelCustomizable」コンポーネントの上にドラッグします。

  5. ページを保存します。

ログイン・プロセスの一部としてコンテナからログイン・ページが呼び出されるため、適切なポートレットおよびセキュリティのコンテキストを確立するために、リクエストをADFバインディング・フィルタに転送する必要があります。このためには、web.xmlファイル内でADFバインディング・フィルタのマッピングを構成する必要があります。これを行うには、次の手順を実行します:

  1. アプリケーション・ナビゲータで、「WEB-INF」ノードを開き、「web.xml」を右クリックし、「プロパティ」を選択してプロパティ・パレットを開きます。

  2. 左パネル内で「フィルタ・マッピング」を選択し、「add」をクリックして、adfBindingsフィルタに新しいマッピングを定義します。これにより、「Webアプリケーション・フィルタ・マッピングの作成」ダイアログ・ボックスが表示されます。

  3. フィルタ名として「adfBindings」を指定し、「サーブレット名」オプションをクリックし、サーブレット名としてFacesサーブレットを指定します。図74-11に示すように、ディスパッチャ・タイプとして「フォワード」および「インクルード」が選択されていることを確認します。

    図74-11 「Webアプリケーション・フィルタ・マッピングの作成」ダイアログ・ボックス

    図74-11の説明が続きます
    「図74-11 「Webアプリケーション・フィルタ・マッピングの作成」ダイアログ・ボックス」の説明

  4. 「OK」をクリックします。

『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の手順に従い、ログイン・ページの作成を完了します。

74.10 自己登録ページの作成

自己登録ページは、WebCenter Portal自己登録タスク・フローを使用して作成するか、CreateUserHelperで提供されるユーザーAPIとロールAPIの使用方法を示す指定のサンプルをベースにしてカスタムで構築できます。この種類の自己登録では、パブリック・ユーザーがアプリケーションに独自のログインおよびパスワードを作成するための方法が提供されます。

また、WebCenter Portalパブリック招待タスク・フローを使用して、組織の外部にいるユーザーを自己登録に招待することもできます。この2種類の自己登録ページとその実行時動作の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の自己登録の有効化に関する項を参照してください。

この項には次のサブセクションが含まれます:

74.10.1 WebCenter Portal自己登録タスク・フローの統合

次に示すように、Frameworkアプリケーション内のWebCenter Portalで提供されている自己登録ページを統合できます。タスク・フローの実行時動作の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の任意のユーザーの自己登録の有効化に関する項を参照してください。

WebCenter Portal自己登録タスク・フローを使用するには:

  1. JDeveloperでPortal Frameworkアプリケーションを開くか作成します。

  2. JSPXページを作成します。

  3. 「リソース・パレット」でタスク・フローを開いて、自己登録タスク・フローをページにドラッグ・アンド・ドロップします。

  4. パブリック資格証明を使用してメール接続および外部アプリケーションを作成し、その外部アプリケーションをメール接続に接続します。これをメールのデフォルト接続にします。メール接続の設定方法の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「メールの管理」の章を参照してください。

  5. 自己登録タスク・フローでページを実行すると、実行時の自己登録ページが表示されます。


注意:

uidmailなどのcn以外のログイン属性を使用している場合は、jps-config.xmlファイルにuser.login.attrおよびusername.attrプロパティが含まれている必要があります。また、これらのプロパティは、対応するログイン属性(たとえばmail)に設定されている必要があります。次の例に示すように、jps-config.xmlファイルを変更します。

<serviceInstance provider="idstore.ldap.provider" name="idstore.ldap.0">
     <!-- existing props ... ->
     <property name="user.login.attr" value="mail"/>
     <property name="username.attr"  value="mail"/>
     <extendedProperty>
      ......
      </extendedProperty>
</serviceInstance>

変更後、WebCenter Portalサーバー(WC_Spaces)を再起動します。


74.10.2 カスタム自己登録ページの構築

次に説明する自己登録ページの例では、ユーザーのfirstnamelastnamemailidlogin nameおよびpasswordを受け入れる単純なページを作成します。ローカル環境内で使用するための出発点としてサンプル・ファイルを使用するか、またはCreateUserHelperで提供されるユーザーAPIおよびロールAPIを使用して独自の自己登録ページとロジックを構築します。サンプルで提供されるユーザー・プロファイル属性のプロパティ・セットを使用すれば、必要に応じてさらに属性をユーザーに追加できます。

自己登録のサンプル・ページを作成するには:

  1. WebCenter拡張機能バンドルのwebcenter/customportalディレクトリにあるsecurity-samples.zip内のセキュリティ・サンプル・ファイルを解凍します。

  2. CreateUserBean.javaファイルとCreateUserHelper.javaファイルをFrameworkアプリケーションのアプリケーション・ソース・フォルダにコピーします。

  3. TestCreateUserPage.jspxファイルをpublic-htmlフォルダにコピーします。

  4. ローカル環境およびローカル要件に合せてTestCreateUserPage.jspxファイルを編集します。

  5. TestCreateUserPage.jspxページを実行して、自己登録ページを表示します。

74.10.3 自己登録招待ページの作成

WebCenter Portalパブリック招待タスク・フローを使用すれば、Portal Frameworkアプリケーション内の自己登録ページにパブリック招待を作成できます。タスク・フローの実行時動作の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の招待に限定した自己登録の有効化に関する項を参照してください。

自己登録招待タスク・フローを使用するには:

  1. JDeveloperでPortal Frameworkアプリケーションを開くか作成します。

  2. JSPXページを作成します。

  3. 「リソース・パレット」でタスク・フローを開いて、自己登録招待タスク・フローをページにドラッグ・アンド・ドロップします。

  4. jazn-data.xmlにある次のCredentialAccessPermissionoracle.webcenter.framework.view/-に付与します。

    jazn-data.xmlファイルは次のようになります。

    <permission>
    <class>oracle.security.jps.service.credstore.CredentialAccessPermission</class>
    <name>context=SYSTEM,mapName=o.webcenter.security.selfreg,keyName=o.webcenter.security.selfreg.hmackey</name>
    <actions>read,write</actions>
    </permission>
    
  5. ページで自己登録タスク・フローを実行すると、実行時の自己登録招待ページが表示されます。

74.11 パスワードのリセット・ページの作成

次の例では、ユーザー名と新規パスワードを受け入れる単純なパスワードのリセット・ページを作成します。ローカル環境内で使用するための出発点としてサンプル・ファイルを使用するか、またはResetPasswordHelperで提供されるユーザーAPIおよびロールAPIを使用して、パスワードを変更するための独自のパスワードのリセット・ページとロジックを構築します。

パスワードのリセットのサンプル・ページを作成するには:

  1. WebCenter拡張機能バンドルのwebcenter/customportalディレクトリにあるsecurity-samples.zip内のセキュリティ・サンプル・ファイルを解凍します。

  2. ResetPasswordBean.javaファイルとResetPasswordHelper.javaファイルをPortal Frameworkアプリケーションのアプリケーション・ソース・フォルダにコピーします。

  3. TestResetPasswordPage.jspxファイルをpublic-htmlフォルダにコピーします。

  4. ローカル環境およびローカル要件に合せてTestResetPasswordPage.jspxファイルを編集します。

  5. TestResetPasswordPage.jspxページを実行して、パスワードのリセット・ページを表示します。

74.12 ポートレット・パーソナライズをテストするための基本認証の構成

ポートレット・パーソナライズは、特定の認証されたユーザーに関連付けられています。このため、編集モードを備えたポートレットを実行すると、ポートレットのドロップダウン・メニューの「パーソナライズ」オプションは、認証されたアプリケーション・ユーザーにのみ表示されます。匿名ユーザーまたはパブリック・ユーザーには、ポートレットをパーソナライズするためのオプションはありません。ポートレットやページを作成する開発者の場合、アプリケーション用の完全なセキュリティ・モデルを作成せずに、ポートレットの編集モードをすぐにテストすることが必要になる場合があります。このようなテストを実行するには、アプリケーションにごく基本的な認証を構成して、テストの完了後にその認証を削除します。


注意:

この手順は、編集モードを備えたすべてのポートレット(Omniportlet、JPSおよびPDK-Java)に有効です。


  1. ユーザーskingおよびロールmanagerを作成します。ユーザーおよびロールの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

  2. ADFセキュリティ・ウィザードを使用して、アプリケーションを保護します。実行する手順の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。ウィザードの「ログイン」ページで、「HTTP Basic認証(RFC 2617)」を選択します。これにより、アプリケーションで基本認証を使用することが指定されます。

  3. 統合WLSでページを実行し、有効なユーザーとしてログインして、ポートレットの編集モードをテストします。

ポートレットの編集モードのテストが完了したら、次の手順を実行すると、このテスト・セキュリティをすばやく削除できます。

  1. アプリケーション・ナビゲータで、テストするポートレットが含まれるページが属するプロジェクトをクリックします。

  2. 「ツール」メニューから、「ADFセキュリティ・ウィザード」を選択します。

  3. 「ようこそ」ページが表示されたら、「次へ」をクリックします。

  4. 「すべてのADFセキュリティ設定の削除」を選択します。

  5. ウィザードの「終了」ページが表示されるまで、「次へ」をクリックします。「終了」をクリックします。セキュリティが削除されます。セキュリティが削除されたことを確認する場合は、ブラウザを終了してからアプリケーションを再実行します。ページにアクセスしてもログインが要求されず、ポートレットのドロップダウン・メニューにパーソナライズ・オプションが表示されなくなります。

74.13 外部アプリケーションの使用

Oracle WebCenter Frameworkでは、外部アプリケーションは独自の認証プロセスを実装したアプリケーションとして定義されます。つまり、アプリケーションは、Portal Frameworkアプリケーションのシングル・サインオン・プロセスに関与しません。ID管理ソリューションが同じ場合もありますが、認証プロセスは異なります。

WebCenter Frameworkサービスが独自の認証を処理するアプリケーションとやりとりする際は、そのサービスと外部アプリケーションを関連付けることで資格証明プロビジョニングに対応できます。つまり、外部アプリケーション定義を使用することで、これらの独立した認証アプリケーションのコンテンツにアクセスする方法が提供されます。

エンドユーザー側からのシングル・サインオンを実現するには、外部アプリケーション・サービスがユーザー名、パスワードおよび外部アプリケーション用の他の資格証明を取得し、それを必要とするWebCenterサービスに提供します。次にWebCenterサービスが、その情報を使用してエンド・ユーザーのかわりにログインします。このユーザー名とパスワードの組合せは、アプリケーションがデプロイされたWebLogicドメインに構成されている資格証明ストアにセキュアに格納されます。

ユーザーは要求に応じてログイン資格証明を入力し、これらの資格証明はPortal Frameworkアプリケーション・ユーザーにマップされ、ドメインに構成された資格証明ストアに格納されます。それ以降は、認証時に資格証明ストアによってその情報が外部アプリケーションに提供されます。外部アプリケーションの資格証明が変更されないかぎり、マップされた情報が資格証明ストアから読み込まれるため、ユーザーによる資格証明の入力は1回のみです。


注意:

外部アプリケーションにログインする際、「ログイン情報を保存する」チェック・ボックスの選択を解除すると、高可用性(HA)環境でフェイルオーバーが発生した場合に、そのユーザー・セッションにプロビジョニングされた資格証明は失われます。同じユーザー・セッションでその外部アプリケーション・コンテンツにアクセスしようとすると、再び資格証明を指定するように要求されます。


Portal Frameworkアプリケーションで使用する外部アプリケーションを指定できるのは、Oracle JDeveloperのウィザードを介してデプロイする前、またはアプリケーション・サーバーの管理インタフェース(WebLogic Scripting ToolおよびOracle Enterprise Manager)を介してデプロイした後になります。詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。

この項の内容は、次のとおりです。

74.13.1 外部アプリケーションの使用

WebCenter外部アプリケーション・サービスを使用すると、マップされたユーザー・アイデンティティを独自の認証が必要なWebアプリケーションに渡すことができます。外部アプリケーションのサポートやWebCenter外部アプリケーション・サービスで提供される資格証明マッピングを使用することで、セキュアなサービス接続の設定、およびユーザーのシームレスな自動シングル・サインオンが可能になります。

次の項で、これについて説明します。

74.13.1.1 セキュアなサービス接続

外部アプリケーション定義でセキュアなサービス(メール・サーバーやポートレット・プロデューサなど)を使用するには、名前付き外部アプリケーションを必要なサービスの接続構成に関連付けます。たとえば、メール・サーバーへの接続では、ユーザーはメールを参照するために、有効なユーザー名とパスワードを入力する必要があります。図74-12に示すように、外部アプリケーションとIMAPサーバー接続定義を関連付けることにより、ユーザーの資格証明がメール・リクエストの一部として自動的に渡されます。


注意:

次のWebCenter Portalコンポーネントは、資格証明マッピング・サポートを使用可能にする外部アプリケーションで構成する必要があります。

  • インスタント・メッセージおよびプレゼンス(IMP)

  • メール

  • ドキュメント

  • RSS

WebCenter Portalサービスで使用するアイデンティティ伝播メカニズムの詳細は、第74.16項「アイデンティティ伝播メカニズム」を参照してください。


図74-12 「新規メール接続の構成」ページ

図74-12の説明が続きます
「図74-12 「新規メール接続の構成」ページ」の説明

図74-13に示すように、ポートレット・プロデューサが独自の認証を処理するアプリケーションに依存する場合は、そのプロデューサを外部アプリケーションに関連付けることができます。これにより、プロデューサを登録する際、ポートレット内で公開されるアプリケーションにマップする適切な外部定義の選択が容易になります。

図74-13 外部アプリケーションURL

図74-13の説明が続きます
「図74-13 外部アプリケーションURL」の説明

実行時には、プロデューサは、外部アプリケーションに関連付けられた情報を使用してアプリケーションに対してユーザーを認証し、結果としてそのポートレットを消費します。プロデューサ・コードは、外部アプリケーションとの認証対話を実際に実行する役割を担います。WebCenter Portal Frameworkで提供される外部アプリケーション・サポートでは、ポートレット・プロデューサへの認証に必要な情報が提供されるだけです。外部アプリケーションの使用は、Oracle PDK-JavaとWSRPの両方のプロデューサでサポートされています。

たとえば、プロデューサで、独自の認証メカニズムを備えたポートレット生成アプリケーションから株式ポートフォリオ・ポートレットを提供するとします。この場合、開発者は:

  • 外部アプリケーションを定義します。これは、Oracle JDeveloperのウィザードまたはOracle Enterprise Managerを使用して行えます。

  • 外部アプリケーションをポートレット・プロデューサに関連付けます。

74.13.1.2 自動シングル・サインオン

自動シングル・サインオンでは、資格証明が資格証明ストアから取得されるため、ユーザーはアプリケーションに直接接続し、保護されたWebアプリケーションに自動的に認証されます。これにより、エンドユーザーにシームレスなシングル・サインオンが提供されます。


注意:

次については自動ログインがサポートされません。

  • BASIC認証を使用した外部アプリケーション。

  • SSO用に構成された外部アプリケーション。

  • 認証用にJ2EEセキュリティ・コンテナ・ログイン・メソッド(j_security_check)を実装しない、カスタマイズされたログイン・フォーム(ADF Facesを使用して構築)を含む外部アプリケーション。

  • UTF8エンコードをサポートしない外部サイト


WebアプリケーションへのURLを直接使用するのではなく、アプリケーションへのリンクが、外部アプリケーションの自動ログイン・サーブレット(adfextapplogin)によってプロキシ処理されます。ユーザーが外部アプリケーションに認証されず、以前に資格証明ストアに資格証明を格納したことがない場合は、後述する資格証明プロビジョニング・ページによってパスワードが要求されます。ただし、ユーザーが以前に資格証明を定義したことがある場合、これが資格証明ストアから返され、ユーザーはアプリケーションに自動的にログインします。

プロキシURLによって、当該外部アプリケーションが参照され、外部アプリケーション定義で指定されたURLにリダイレクトされます。

/adfextapplogin?extappid=<extappid>

たとえば、myoracle.comというWebサイトを示す外部アプリケーションを定義したFrameworkアプリケーションがある場合(外部アプリケーションのIDはmyoracle)、プロキシURLは次のようになります。

/adfextapplogin?extappid=myoracle

リンクのtarget属性も適切に設定する必要があります。たとえば、<a href=>を使用する場合は、ターゲットをhrefに指定するだけでなく、そのtarget属性を適切に設定します。サーブレットに指定されたtarget属性によって、「取消」ボタンの機能が次のように決定されます。

/adfextapplogin?extappid=<extappid> [target= _self | _blank]

target=_blankを指定した場合はリンクが新しいウィンドウで開きます。target=_selfを指定した場合はリンクが現在のウィンドウで開きます。targetパラメータが指定されていない場合はリンクが現在のウィンドウで開きます。

このパラメータは、資格証明プロビジョニング・ページの「取消」ボタンの動作方法にも影響を与えます。_blankが指定された場合は、「取消」をクリックすると新規ウィンドウが閉じられ、_selfが指定された(またはtargetパラメータが使用されない)場合は、ユーザーがコール元のページに戻ります。


注意:

UTF8エンコードをサポートしないサイトでは、外部サイトの自動ログインはサポートされません。


74.13.2 ユーザー資格証明の指定

エンドユーザーが外部アプリケーションの資格証明を定義できるようにする方法は、外部アプリケーションの使用方法によって異なります。多くのコンポーネントでは、コンポーネントが公開するタスク・フローに資格証明プロビジョニング画面が組み込まれており、それ以上の構成手順は必要ありません。ただし、これらのコンポーネントを使用してExternal Application - Change Passwordタスク・フロー・コンポーネントをアプリケーションに追加できるため、エンド・ユーザーは、WebCenter Portal Frameworkアプリケーションに登録されている各外部アプリケーションに対して、適切なユーザー名およびパスワードを事前に設定できます。

External Application - Change Passwordタスク・フローでは、共有資格証明を指定しないアプリケーションに定義されたすべての外部アプリケーションが表示されます(共有資格証明の詳細は、第74.13.3項「外部アプリケーションの管理」を参照してください)。このタスク・フローを表示するには、ユーザーが認証される必要があることに注意してください。

ただし、インスタント・メッセージおよびプレゼンス・サービスでは、「リソース・パレット」または「コンポーネント・パレット」からアプリケーションにExternal Application - Change Passwordタスク・フロー・コンポーネントを明示的に追加する必要があります。External Application - Change Passwordタスク・フロー・コンポーネントを使用したインスタント・メッセージおよびプレゼンス・サービスに対するセキュリティの構成手順の詳細は、第34.2.2項「IMP機能の設計時の追加」を参照してください。

実行時、資格証明プロビジョニング画面には、外部アプリケーション登録を介して指定されたデータ・フィールドからなるログイン・データ・フィールドが表示されます。ユーザーは、データ・フィールドに特定の外部アプリケーションに対するログイン情報を入力し、そのログイン情報が外部アプリケーションまたはサービスに渡されます。プロビジョニング画面に資格証明を入力すると、WebLogicドメインに構成された資格証明ストア内でもその資格証明が維持されることになります。

デフォルトでは、ユーザーが入力したログイン情報は資格証明ストアに保存され、以後のセッションのログインを処理します。ユーザーの資格証明に変更がないかぎり、ユーザーが再度ログイン情報を入力する必要はありません。ただし、エンド・ユーザーは、資格証明プロビジョニング・ページの「ログイン情報を保存する」チェック・ボックスの選択を解除することで、現在のセッションの情報を使用するかを選択できます。

74.13.3 外部アプリケーションの管理

この項では、外部アプリケーションの登録に関する情報について説明します。また、登録詳細の編集および削除のプロセスについても説明します。次のサブセクションが含まれます:

74.13.3.1 外部アプリケーション・タスク・フローの追加

外部アプリケーション・タスク・フローを使用すると、実行時に外部アプリケーション接続を管理できます。このタスク・フローでは、ユーザーの資格証明がバックエンドで変更された場合に、すべての外部アプリケーションに対する資格証明を更新するインタフェースが提供されます。このタスク・フローを使用すれば、ランタイム管理コンソールの「ツールとサービス」タブから資格証明を更新する必要はなくなります。

Oracle JDeveloperを使用して追加可能な外部アプリケーション・タスク・フローは次のとおりです。

  • 外部アプリケーション: このタスク・フローでは、実行時に接続を登録、変更および削除できます。

  • 外部アプリケーション - パスワードの変更: このタスク・フローでは、実行時に外部アプリケーションのパスワードを変更できます。

Portal Frameworkアプリケーション・テンプレートを使用して作成されたアプリケーションでは、Portal Frameworkアプリケーションの管理ページ(「ツールとサービス」タブ)からこれらのタスク・フローをすぐに使用できます。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のPortal Frameworkアプリケーションのサービス、ポートレット・プロデューサおよび外部アプリケーションの構成に関する項を参照してください。

また、他のタスク·フローのように、アプリケーション・ページに外部アプリケーション・タスク·フローを追加することができます。Portal Frameworkアプリケーション・テンプレートを使用せず、したがって管理ページがプロジェクトの一部でない場合、これは特に有用です。特別な権限は、これらのタスク・フローを介して外部アプリケーション接続を管理したり、表示するために必要です。

  • AppConnectionManager - このロールを持つユーザーは、実行時に外部アプリケーション接続を登録、変更および削除できます。

  • AppConnectionViewer - このロールを持つユーザーは、実行時に外部アプリケーション接続を表示できます。このロールは、ログインするすべてのユーザー(authenticated-roleを持つユーザー)にデフォルトで付与されます。

デフォルトでは、管理者ロールを持つユーザーが外部アプリケーションを管理できます。これらのタスク・フローを介して他のユーザーに接続を管理させる場合は、そのユーザーにAppConnectionManagerロールを付与する必要があります。

外部アプリケーション・タスク・フローを追加するには:

  1. タスク・フローを追加するアプリケーションで、JSFページを作成するか、開きます(第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照)。

  2. リソース・パレットで「カタログ」「WebCenter Portal - サービス・カタログ」「タスク・フロー」と開きます。

  3. 「リソース・パレット」から「外部アプリケーション」をドラッグし、それをaf:form beginタグとendタグの間のページにドロップします。

  4. 「外部アプリケーション」タスク・フロー(af:region - # {bingings.extapp1.regionModel})の後、「リソース・パレット」から「外部アプリケーション - パスワードの変更」をドラッグし、それをaf:form beginタグとendタグの間のページにドロップします。

  5. 必要に応じて、AppConnectionManagerロールを1人以上のテスト・ユーザーに付与します。

    • テスト・ユーザーTEST_EXTAPPを追加します。

    • AppConnectionManagerロールを付与します。

    ユーザーを追加してこのロールを付与する方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のADFエンティティ・オブジェクトへの権限の付与に関する項を参照してください。

  6. ページを保存し、実行します。管理者として、または前の手順で定義したTEST_EXTAPPユーザーとしてログインします。図74-14に示す画面が表示されます。

    図74-14 ブラウザでの「外部アプリケーション」タスク・フロー

    図74-14の説明が続きます
    「図74-14 ブラウザでの「外部アプリケーション」タスク・フロー」の説明


注意:

実行時、アプリケーション管理者は、WebCenter Portal管理を使用してAppConnectionManagerロールおよびAppConnectionViewerロールをユーザーに付与できます(Oracle Fusion Middleware Oracle WebCenter Portalの管理のアプリケーション・ロールへのメンバーの追加に関する項を参照)。または、システム管理者は、Fusion Middleware Controlを使用してAppConnectionManagerロールおよびAppConnectionViewerロールを付与できます(Oracle Fusion Middleware Oracle WebCenter Portalの管理のFusion Middleware Controlを使用したアプリケーション・ロールの付与に関する項を参照)。


74.13.3.2 Oracle JDeveloperでの外部アプリケーションの処理

この項では、Oracle JDeveloperでの外部アプリケーションの登録と、登録詳細の編集および削除について説明します。次のサブセクションが含まれます:

74.13.3.2.1 外部アプリケーションのOracle JDeveloperでの登録

外部アプリケーションの登録ウィザードを使用して、外部アプリケーションへの認証に必要なデータ・タイプ(ログイン・フィールド名など)を指定し、その情報を格納します。

外部アプリケーションをOracle JDeveloperで登録するには:

  1. アプリケーション・ナビゲータで、WebCenter Portal Frameworkアプリケーションまたはプロジェクトを右クリックし、ポップアップ・メニューから「新規」を選択します。

  2. 「新規ギャラリ」で、「General」ノードの下の「External Applications」を選択します。

  3. 右ペインで「外部アプリケーション」を選択し、「OK」をクリックします。

    これにより、外部アプリケーションの登録ウィザードが表示されます。

  4. 「名前」ページで「外部アプリケーションの作成場所」オプションを使用して、他のPortal Frameworkアプリケーションで外部アプリケーションを再利用するかどうかを指定します。「アプリケーション・リソース」を選択して、登録されているPortal Frameworkアプリケーションにのみ外部アプリケーションを利用可能にするか、「リソース・パレット」を選択して、リソース・パレットからOracle JDeveloperで作成する任意の新しいPortal Frameworkアプリケーションに外部アプリケーションを利用可能にします。

    「リソース・パレット」を選択すると、リソース・パレットの「IDE接続」の下に外部アプリケーション接続が表示されます。アプリケーションで使用する場合は、リソース・パレットで外部アプリケーションを右クリックして、「アプリケーションに追加」をクリックします。

  5. 「名前」フィールドに、アプリケーションを識別する一意の名前を入力します。

    この名前は、WebCenter Portal Frameworkアプリケーション内および他の接続間で一意である必要があります。このフィールドは後から変更できないことに注意してください。

  6. 「表示名」フィールドに、資格証明プロビジョニング画面でエンド・ユーザーに表示されるアプリケーション名を入力します。

    第74.13.3.2.2項「外部アプリケーションの登録詳細のOracle JDeveloperでの編集」で説明しているように、この表示名はいつでも変更できます。このフィールドを空白のままにすると、デフォルトで、「名前」フィールドの値が表示名に設定されます。

  7. 「次へ」をクリックします。

  8. 「一般」ページの「ログインURL」フィールドに、HTMLログイン・ページの送信先のURLを入力します。

    このURLを取得するには、アプリケーションのログイン・フォームのHTMLソースを表示します。


    注意:

    第74.13.2項「ユーザー資格証明の指定」で説明しているように、「一般」ペインのフィールドは、定義されている外部アプリケーションがクリックスルー・ログインを提供する場合のみ必要です。


  9. 「ユーザー名/IDフィールド名」フィールドに、アプリケーションでユーザー名フィールドに使用されるラベル(User Nameなど)を入力します。

  10. 「パスワード・フィールド名」フィールドに、アプリケーションでパスワード・フィールドに使用されるラベル(Passwordなど)を入力します。

  11. 「認証方式」リストから、アプリケーションのログイン方式を選択します。

    次のうちから選択します。

    • GET

      サーバーにページ・リクエストを送信します。ログインURLの一部としてログイン資格証明を送信します。

    • POST

      フォーム本体内でログイン資格証明を送信します。

  12. 「次へ」をクリックします。

  13. 「追加フィールド」ページで、外部アプリケーションのログイン・フォームとともに送信される追加フィールドの名前および値を入力します。

    「フィールドの追加」ボタンをクリックして、入力フィールドを作成します。

    • フィールド名

      外部アプリケーションのHTMLログイン・フォームへのユーザー入力を必要とする追加フィールドに対して一意の名前を入力します。

    • フィールド値

      対応するフィールド名のデフォルト値を入力します。

    • ユーザーに表示

      これを選択すると、フィールドが外部アプリケーションのログイン画面に表示されます。フィールドを表示しない(選択しない)場合、すべてのユーザーで外部アプリケーションへのログインに使用されるデフォルト値を指定する必要があります。値がユーザーに固有の場合、フィールドをユーザー・プロビジョニング・ページに表示する必要があります。


    注意:

    「フィールドの削除」オプションを使用すると、選択した行を削除できます。


  14. 「次へ」をクリックします。

  15. すべての認証ユーザーが特定の資格証明を使用して外部アプリケーションにアクセスするようにするには、「共有資格証明」ページで「共有資格証明の指定」チェック・ボックスを選択し、「ユーザー名」および「パスワード」を指定します。認証ユーザーは、外部アプリケーションにアクセスする際、資格証明の入力を要求されなくなります。

  16. 「次へ」をクリックします。

  17. すべての認証されていない(パブリック)ユーザーが外部アプリケーションのアクセスに使用する資格証明を指定するには、「パブリック資格証明」ページで「パブリック資格証明の指定」チェック・ボックスを選択し、「ユーザー名」および「パスワード」を指定します。これは、いずれかのWebCenter Portalコンポーネント(ドキュメント・ライブラリ、インスタント・メッセージ、プレゼンスなど)を介して外部アプリケーションのコンテンツにアクセスする場合および、タスク・フローがパブリック・ページに配置される場合に必要です。

  18. 「終了」をクリックして、外部アプリケーションを登録します。

外部アプリケーションの登録後、エンド・ユーザーがユーザー名とパスワードを定義できるようにアプリケーションを構成する必要があります。これを行うには、External Application - Change Passwordタスク・フロー・コンポーネントをアプリケーションにドロップします。これによって、エンドユーザーは、WebCenter Portal Frameworkアプリケーションに登録された各外部アプリケーションに対して適切なユーザー名とパスワードを事前に設定できます。

エンド・ユーザーがユーザー名とパスワードを定義できるようにアプリケーションを構成するには、次の手順を実行します:

  1. ViewControllerプロジェクトのJSFページを開きます。

  2. リソース・パレットから、「カタログ」、「WebCenter Portal - サービス・カタログ」、「タスク・フロー」の順に開きます。

  3. External Application - Change Passwordタスク・フロー・コンポーネントをページにドラッグします。

  4. 要求されたら、タスク・フローの作成方法として「リージョン」を選択します。

  5. このタスク・フローが認証ユーザーからのみアクセスできるようにページを保護します

74.13.3.2.2 外部アプリケーションの登録詳細のOracle JDeveloperでの編集

外部アプリケーションに指定されている登録詳細を修正するには、「外部アプリケーションの登録情報の編集」ウィザードを使用します。

外部アプリケーションの登録詳細を編集するには:

  1. アプリケーション・ナビゲータで、「コネクション」ノードの下の「アプリケーション・リソース」ペインから外部アプリケーションを右クリックし、ポップアップ・メニューから「プロパティ」を選択します。

  2. 外部アプリケーションの編集ウィザードでリンクをクリックしてページを表示し、その値を修正します。

    次のうちから選択します。

    • 名前

    • 一般

    • 追加フィールド

    • 共有資格証明

    • パブリック資格証明

    詳細は、第74.13.3.2.1項「外部アプリケーションのOracle JDeveloperでの登録」を参照してください。

  3. 「OK」をクリックして、変更を保存してウィザードを終了するか、「取消」をクリックして、保存せずにウィザードを終了します。

74.13.3.2.3 外部アプリケーションの登録詳細のOracle JDeveloperでの削除

外部アプリケーションの登録詳細を削除するには、次の手順を実行します:

  1. アプリケーション・ナビゲータで、「コネクション」ノードの下の「アプリケーション・リソース」ペインから外部アプリケーションを右クリックし、ポップアップ・メニューから「削除」を選択します。

    あるいは、アプリケーション・ナビゲータで外部アプリケーションを選択し、「編集」メニューから「削除」を選択します。

  2. 「外部アプリケーションの削除」ダイアログ・ボックスで、「はい」を選択します。

外部アプリケーションが関連付けられているポートレット・プロデューサなどのコンポーネントへの参照も削除することをお薦めします。これを行わないと、コンポーネントで外部アプリケーションとの通信が試みられるため、実行時にエラーになる場合があります。

74.13.3.3 Enterprise Managerでの外部アプリケーションの処理

Oracle JDeveloperで外部アプリケーションの登録詳細の作成、編集および削除が行えるのと同様に、Enterprise Managerでもこれを行うことができます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「外部アプリケーションの使用」の章を参照してください。

74.13.3.4 WLSTを使用した外部アプリケーションの処理

Oracle JDeveloperおよびEnterprise Managerと同様に、WebLogic Scripting Tool (WLST)のコマンドを使用して外部アプリケーションの登録詳細を作成、編集および削除できます。詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「外部アプリケーションの使用」の章を参照してください。

74.14 キーストアへのカスタム証明書の登録

Secure Sockets Layer (SSL)通信では、認証局によって発行された信頼できる証明書を必要とし、認証局は発行または署名した証明書の認証を保証します。広く受け入れられている認証局は、キーストア(cacertsファイル)にリストされていて、<JDEV_HOME>\jdk\jre\lib\securityディレクトリで利用可能です。ポートレット・プロデューサが、広く受け入れられていない認証局で発行されたセキュリティ証明書を使用してこのプロデューサからポートレットにアクセスしようとする場合、信頼していない認証局から発行されたセキュリティ証明書であることを知らせるために、セキュリティ・アラートが表示されます。これは、キーストアで証明書が利用できないことを意味します。そのようなポートレットにアクセスするたびにプロンプトが表示されないようにするには、キーストアにこの証明書を登録する必要があります。

証明書をキーストアに登録するには、次の手順を実行します:

  1. JDEV_HOME\jdk\jre\lib\securityにナビゲートします。

  2. cacertsファイルをバックアップします。

  3. Internet ExplorerでプロデューサURLにアクセスして、証明書を取得します。


    注意:

    FireFoxの最近のバージョンでは、証明書をエクスポートする手段が備わっていません。


  4. 図74-15に示すように、「セキュリティの警告」ダイアログ・ボックスで、「証明書の表示」をクリックします。

    図74-15 「セキュリティの警告」ダイアログ・ボックス

    図74-15の説明が続きます
    「図74-15 「セキュリティの警告」ダイアログ・ボックス」の説明

  5. 「証明書」ダイアログ・ボックスで、「証明のパス」タブをクリックします。

  6. 図74-16に示すように、デフォルトでダミーの子証明書が選択されます。ルート証明書を選択し、「証明書の表示」をクリックします。

    図74-16 「証明書」ダイアログ・ボックス

    図74-16の説明が続きます
    「図74-16 「証明書」ダイアログ・ボックス」の説明

  7. 「詳細」タブをクリックし、「ファイルにコピー」をクリックします。

  8. 図74-17に示すように、「証明書のエクスポート ウィザード」で、「エクスポートするファイル」が表示されるまで、デフォルト設定を受け入れて「次へ」をクリックします。

    図74-17 「証明書のエクスポート ウィザード」の「エクスポートするファイル」画面

    図74-17の説明が続きます
    「図74-17 「証明書のエクスポート ウィザード」の「エクスポートするファイル」画面」の説明

  9. 「ファイル名」フィールドに<JDEV_HOME>\jdk\jre\lib\security\root.cerを入力し、「次へ」をクリックします。

  10. 「終了」をクリックします。

  11. コマンド・プロンプトで、デフォルトのディレクトリを<JDEV_HOME>\jdk\jre\lib\securityに設定し、次のコマンドを実行します。

    keytool -import -file root.cer -keystore cacerts -storepass changeit
    

    このコマンドを実行することにより、root.cer証明書がキーストアにインポートされます。

  12. プロンプトでyを入力して、この証明書を信頼することを確認します。

  13. 証明書を使用してcacertsファイルが更新されていることを確認します。

74.15 ポートレットおよびカスタマイズ可能コンポーネントの継承されたセキュリティのオーバーライド

ポートレットおよびカスタマイズ可能コンポーネントに対する各アクションは、デフォルトでは保護されていません。ポートレットまたはカスタマイズ可能コンポーネントをカスタマイズできるかどうかは総じて、ページ権限から継承されます。ポートレットまたはカスタマイズ可能コンポーネント内に詳細なアクティビティの権限を付与する場合は、ページ・レベルのセキュリティ継承を無視し、必要なアクションに対してセキュリティを直接定義できます。

ユーザーがポートレットまたはカスタマイズ可能コンポーネントに対してアクションを実行できるかどうかは、adf-config.xmlファイル内のアプリケーション・ワイドなスイッチの値(enableSecurity)に基づくページ・セキュリティから継承されます。アプリケーションの作成中にWebCenter Portal Frameworkアプリケーション・テンプレートを選択した場合、adf-config.xmlファイルは<APPLICATION_NAME>/.adf/META-INFディレクトリ内に配置されています。enableSecurity要素は、デフォルトではadf-config.xml内で使用できません。ポートレットおよびカスタマイズ可能コンポーネントに対するページ・レベルのセキュリティ継承をオーバーライドまたは拡張するには、例74-1および例74-2に示すように、ポートレット・セキュリティおよびカスタマイズ可能コンポーネント・セキュリティのセクションをadf-config.xmlファイルに追加し、これらのセクションのenableSecurity要素をtrueに設定します。

例74-1 adf-config.xmlのポートレット・セキュリティ・セクション内のenableSecurity要素

<!--
==============================================================================
PORTLETS ACTIONS SECURITY
============================================================================== 
-->
<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
  <adfp:enableSecurity value="true"/>
    <adfp:actionsCategory>
       ..........................................
</adfp:adf-config-child>

例74-2 adf-config.xmlのカスタマイズ可能コンポーネント・セキュリティ・セクション内のenableSecurity要素

<!--
==============================================================================
CUSTOMIZABLE COMPONENTS ACTIONS SECURITY
============================================================================== 
-->
<cust:customizableComponentsSecurity
xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable/config">
  <cust:enableSecurity value="true"/>
    <cust:actionsCategory>
       ..........................................
</cust:customizableComponentsSecurity>

ポートレットおよびカスタマイズ可能コンポーネントに対するアクションのセキュリティは、次のレベルで実装できます。


注意:

  • 権限は、親からのみ継承できます。階層内の他の位置にあるコンポーネントからの継承は、サポートされていません

  • ポートレットとカスタマイズ可能コンポーネントのセキュリティオーバーライド実装は似ていますが、互いに無関係です。このため、ポートレットをカスタマイズ可能コンポーネント(PanelCustomizableコンポーネントなど)内に配置した場合、ポートレットはカスタマイズ可能コンポーネントからオーバーライド設定を継承しません。この場合、ポートレットに定義されているセキュリティオーバーライド設定が使用されます。

  • アクション・カテゴリ・レベルまたはアクション・レベルで行われた設定は、アプリケーション内のすべてのコンポーネント・インスタンスに対して適用可能です。ポートレットまたはカスタマイズ可能コンポーネントの単一のインスタンスに対してこれらを設定することはできません。


第74.15.1項「ポートレット・セキュリティ」では、ポートレットに対するセキュリティをアクション・カテゴリ・レベルおよびアクション・レベルで実装する方法について説明します。カスタマイズ可能なコンポーネントに対するアクションのセキュリティをアプリケーション・レベルで定義する方法の詳細は、第22.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」を参照してください。

74.15.1 ポートレットのセキュリティ

adf-config.xmlファイルのポートレット・セキュリティ・セクションでenableSecuritytrueに設定すると、ポートレットに対するアクションをアプリケーション・レベルでページから継承する場合に、ポートレットのセキュリティを定義できます。trueの値は、ユーザーの権限がページ権限から決定され、次に指定されたactionsCategory要素とactions要素に応じて補完されることを示します。アクション・カテゴリおよび各アクションを定義することにより、特定のページ権限内で使用可能な各アクションを公開するかどうかを制御できます。

前述のような様々なレベルでポートレットのアクションにセキュリティを実装するには、次の各項でセキュリティ設定を定義する必要があります。

74.15.1.1 アクション・カテゴリ・レベルでのセキュリティの定義

adf-config.xmlファイルのポートレット・セキュリティ・セクション内にactionsCategory要素を追加すると、アプリケーション内のポートレット上に公開されるアクション・グループを定義できます。有効化したactionsCategory属性に基づいて、ポートレットに適切な権限が設定されます。表74-3に、様々なactionsCategory属性と、デフォルトでサポートされるポートレット・アクションを示します。

表74-3 actionsCategory属性とポートレット・アクションのマッピング

属性値 サポートされるアクション

viewActionsCategory

Render

isHelpModeAvailable

isNormalModeAvailable

isAboutModeAvailable

isPreviewModeAvailable

isDetailModeAvailable

isLinkModeAvailable

isPrintModeAvailable

customizeActionsCategory

showMoveAction

showRemoveAction

isCustomizeModeAvailable

showMinimizeAction

showMaximizeAction

isConfigModeAvailable

personalizeActionsCategory

isPersonalizeModeAvailable


例74-3に、adf-config.xmlファイルのポートレット・セキュリティ・セクションに追加できるactionsCategoryエントリを示します。この例では、カスタマイズを禁止するためにcustomizeActionsCategoryfalseに設定されています。これらの要素の値にはExpression Language (EL)を使用できます。

例74-3 ポートレット・セキュリティ・セクション内のactionsCategory要素

<!--
==============================================================================
PORTLETS ACTIONS SECURITY
============================================================================== 
-->
<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
  <adfp:enableSecurity value="true"/>
    <adfp:actionsCategory>
      <adfp:actionCategory name="viewActionsCategory" value="true"/>
      <adfp:actionCategory name="customizeActionsCategory" value="false"/>
      <adfp:actionCategory name="personalizeActionsCategory" value="true"/>
    </adfp:actionsCategory>

    <adfp:actions>
    ..........................................
    </adfp:actions>

</adfp:adf-config-child>

74.15.1.2 アクション・レベルでのセキュリティの定義

adf-config.xmlファイルのポートレット・セキュリティ・セクション内にactions要素を使用すると、各ポートレット・アクションを有効化または無効化できます。有効化したaction属性に基づいて、ポートレットに適切な権限が設定されます。

例74-4に、adf-config.xmlファイルのポートレット・セキュリティ・セクションに追加できるactionsエントリの例を示します。これらの要素の値にはELを使用できます。この場合、isCustomizeModeAvailablefalseに設定することによって、カスタマイズを禁止しています。

例74-4 ポートレット・セキュリティ・セクション内のactions要素

<!--
==============================================================================
PORTLETS ACTIONS SECURITY
============================================================================== 
-->
<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet">
  <adfp:enableSecurity value="true"/>
    <adfp:actionsCategory>
    ..........................................
    </adfp:actionsCategory>

    <adfp:actions>
      <adfp:action name="Render" value="true"/>
      <adfp:action name="showMoveAction" value="true"/>
      <adfp:action name="isCustomizeModeAvailable" value="false"/> 
      <adfp:action name="isPersonalizeModeAvailable" value="true"/>
    </adfp:actions>

</adfp:adf-config-child>

ELを使用した営業時間外のポートレットのカスタマイズの禁止

たとえば、通常の営業時間外にはポートレットのカスタマイズができないように構成されたアプリケーションでは、継承されたポートレット・セキュリティをオーバーライドする必要があります。このためにはまず、例74-5に示すようなメソッドが含まれるマネージドBean(たとえば、appBusinessRulesという名前のマネージドBean)を作成する必要があります。

例74-5 appBusinessRulesマネージドBean内に定義されたInsideBizHoursメソッド

public boolean isInsideBizHours() 
  { 
    Calendar rightNow = Calendar.getInstance(); 
    int      currentHr = rightNow.get(rightNow.HOUR_OF_DAY); 
    
    // Do not allow customize operation outside of standard business hours

    if ((currentHr > 9) && (currentHr < 17)) 
       return true; 
    else 
       return false; 
  }

その後は、例74-6に示すように、adf-config.xmlファイルのポートレット・セキュリティ・セクション内のactionsCategory要素からこのマネージドBeanを参照できます。

例74-6 adf-config.xmlファイル内で参照されるInsideBizHoursメソッド

<adfp:adf-config-child xmlns:adfp="http://xmlns.oracle.com/adfp/portlet"> 
  <adfp:enableSecurity value="true"/> 
   
    <adfp:actionsCategory> 
      <adfp:actionCategory name="customizeActionsCategory" 
      value="#{appBusinessRules.InsideBizHours?"true":"false"}"/> 
    </adfp:actionsCategory> 
     
</adfp:adf-config-child>

この例では、アプリケーションが営業時間内に実行される場合のみ、customizeActionsCategorytrueに設定されます。この時間外は、ページに対する権限がユーザーに付与されていても、ポートレットはカスタマイズできません。明示的に定義されていないその他のカテゴリはすべて、ページから継承されます。

ELを使用した、企業ネットワーク外のポートレットのパーソナライズおよびカスタマイズの禁止

この例では、ユーザーがアプリケーションに企業プロキシ・サーバーを介してアクセスしたか、それとも企業ネットワーク内部からアクセスしたかを判別するために、マネージドBeanによってリクエストのIPアドレスが確認されます。この単純な例では、リクエストにプロキシ・サーバーのIPアドレスが含まれていれば、そのリクエストは企業ネットワークの外部から発生したものと想定します。IPアドレスが危険にさらされることがあるため、一般には、完全にセキュリティの基礎をIPアドレスにすることはお薦めしません。このために、例74-7に示すメソッドをマネージドBeanに追加する必要があります。

例74-7 appBusinessRulesマネージドBean内に定義されたInsideCorpNetworkメソッド

public boolean isInsideCorpNetwork()
  {
    // Do not allow personalize and customize operations 
    // for requests that go through the corporate proxy

    FacesContext       ctx = FacesContext.getCurrentInstance();
    ExternalContext    ectx = ctx.getExternalContext();
    HttpServletRequest myrequest = (HttpServletRequest) ectx.getRequest();        
    String             currentIP = myrequest.getRemoteAddr(); 

    if (currentIP.equals(getProxyServerIP()))
        return false;
    else
        return true;
  }

その後は、例74-8に示すように、adf-config.xmlファイルのポートレット・セキュリティ・セクション内のactionsCategory要素からこのマネージドBeanを参照できます。

例74-8 adf-config.xmlファイル内で参照されるInsideCorpNetworkメソッド

<adfp:adf-config-child xmlns="http://xmlns.oracle.com/adfp/portlet"> 
  <adfp:enableSecurity value="true"/> 
   
    <adfp:actionsCategory> 
      <adfp:actionCategory name="customizeActionsCategory" 
                    value="#{appBusinessRules.InsideCorpNetwork?"true":"false"}"/> 
      <adfp:actionCategory name="personalizeActionsCategory" 
                    value="#{appBusinessRules.InsideCorpNetwork?"true":"false"}"/>
    </adfp:actionsCategory> 
</adfp:adf-config-child>

この例では、アプリケーションのリクエストのIPアドレスが企業プロキシのIPアドレスと一致しない場合のみ、customizeActionsCategoryおよびpersonalizeActionsCategorytrueに設定されます。ここでは、内部リクエストが有効なクライアントIPアドレスを持っていることを前提としています。明示的に定義されていないその他のカテゴリはすべて、ページから継承されます。

74.16 アイデンティティ伝播メカニズム

次の表は、エンド・ユーザーのアイデンティティを様々な情報ソースに伝播するためにWebCenterサービスによって使用されるアイデンティティ伝播メカニズムを示しています。この情報ソースからコンテンツがPortal Frameworkアプリケーションに統合されます。

可能なかぎり、アイデンティティ伝播にはWS-Securityを使用してください。従来の制限や事前定義されたストア固有の標準または仕様に起因してWS-Securityを使用できない場合は、外部アプリケーション・サービスにより提供される資格証明マッピング機能をプライマリ・メカニズムとして使用し、個別のセキュリティ・プロバイダを使用してユーザーのリモート・アプリケーションの資格証明を取得します。WS-Securityに関する詳細は、『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』を参照してください。外部アプリケーションの詳細は、第74.13項「外部アプリケーションの使用」を参照してください。

表74-4 アイデンティティ伝播メカニズム

サービス 接続タイプ アイデンティティ伝播メカニズム

ディスカッション

Jive

Oracle WS-Security

お知らせ

ディスカッション・フォーラムを参照


ドキュメント

コンテンツ・サーバー

ソケット接続を使用した専用のアイデンティティ伝播メカニズム。SSLの相互認証を使用することも、ソケットのIP認証をクリアする(つまり外部アプリケーションを使用する)こともできます。


ファイル・システム

n/a


Portal 10g/11g

JSR-170(外部アプリケーション)


Day Adapter

JSR-170(外部アプリケーション)

電子メール

電子メール接続

外部アプリケーション


LDAP接続

外部アプリケーション

イベント - 個人

Exchangeサーバー接続

外部アプリケーション

外部アプリケーション

ブラウザからのHTTPリクエスト

外部アプリケーション

IMP

Microsoft Live Communication Server (LCS)

SOAP、Webサービスの呼出し。

外部アプリケーション

ポートレット・プロデューサ

WSRPプロデューサ

(セキュア)

Oracle WS-Security

(WSRP仕様による推奨)


WSRPプロデューサ

(非セキュア)

SOAPメッセージ内のWSRP userContext

(WSRP仕様)


JPDKプロデューサ

(外部アプリケーション)

外部アプリケーション

JPDKペイロードにはユーザー情報が含まれており、ProviderUser内のプロデューサに伝達されます。

この情報には、マップされたユーザー名とパスワードも含まれています。

(専用、レガシー)


JPDKプロデューサ

(非セキュア)

レンダリング・リクエスト内のユーザー名

(専用、レガシー)

検索

Secure Enterprise Search (SES)

Webサービス呼出し

Wiki

ブラウザ接続

SSOメカニズム - OSSO/OAMまたは他のWLSでサポートされるSSOメカニズム

ワークリスト・サービス

BPEL接続

Webサービス呼出し

Oracle WS-Security


74.17 WS-Securityを使用したWSRPプロデューサを介するアイデンティティ伝播の保護

Web Services for Remote Portlets (WSRP)仕様では、コンシューマとポートレット・プロデューサの間でセキュアなアイデンティティ伝播をするためにWeb Services Security (WS-Security)を利用できることが示されています。ただし、WSRPそれ自体が、ポートレット・プロデューサへのエンド・ユーザーのアイデンティティのセキュアなアイデンティティ伝播を提供するわけではありません。WSRP仕様は、セキュアなアイデンティティ伝播に対しては明示的に他のセキュリティ標準に準拠しており、使用する必要のある特定のWS-Securityプロファイルやオプションを扱うことはありません。セキュアなメカニズムがない場合、WSRPでは、ユーザー・カテゴリという概念が定義されています。ユーザー・カテゴリは、JSR168ポートレットで使用されるセキュリティ・ロールに類似したロールにマップできます。WSRPとWS-Securityを組み合せて使用することにより、エンドツーエンドのセキュリティが確実になります。

この項の内容は、次のとおりです。

74.17.1 WS-Securityを使用しないアイデンティティ伝播

WS-SecurityなしでWSRPを使用すると、SOAPメッセージ内のuserContext構造に、ユーザー・プロファイル情報とユーザー・カテゴリ情報が含まれます。この情報はセキュアでないと考えられるため、パーソナライズ機能およびカスタマイズ機能以外には使用しないでください。機密的なリソースの認可には使用しないでください。この情報は、JSR168 APIのisUserInRole(role)およびgetUserPrincipal内にも公開されます。例74-9内のコードは、サンプル・ポートレットのマークアップ・レンダリング・コードでisUserInRole APIを使用して、表示するコンテンツを決定する方法を示しています。

例74-9 isUserInRole(role) API

private void doViewHtml(RenderRequest 
request, RenderResponse response) 
throws PortletException, IOException
{
// To do: markup the required content.
PrintWriter out = response.getWriter();
out.print("<p>Welcome");
out.println("</p>");
if (request.isUserInRole("moderator"))
   {out.println("<p>MODERATOR</p>" );}
else 
   {out.println("<p>not moderator</p>" );}
if (request.isUserInRole("participant"))
   {out.println("<p>PARTICIPANT</p>" );}
else 
   {out.println("<p>not participant</p>" );}
if (request.isUserInRole("viewer"))
   {out.println("<p>VIEWER</p>" );}
else 
   {out.println("<p>not viewer</p>" );}
    }

74.17.2 WS-Securityを使用したアイデンティティ伝播

WS-SecurityをWSRPとともに利用すると、ユーザーのアイデンティティは、WS-Securityヘッダー内でSOAPメッセージ本体の外部に伝播されます。これは、ユーザー名トークン形式を使用するユーザー・アサーションであり、コンシューマを認証してアサーションの整合性を保つためにデジタル署名されます。

このメカニズムを使用すると、JSR 168 APIのisUserInRoleおよびgetUserPrincipalが、SOAPメッセージのuserContext内の情報ではなく、WS-Security認証から生成されたセキュリティ・コンテキストに基づいて確立されます。

また、プロデューサのデフォルト・ユーザー接続パラメータを使用して匿名(PUBLICなど)クライアントがデフォルト・ユーザーにマップされる場合は、WSRPプロデューサをstrict-authenticationで構成し、権限付与をポリシー・ストアに追加する必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理のOracle PDK-Javaプロデューサの登録に関する項を参照してください。

WS-Securityを使用すると、Frameworkアプリケーションおよびそれにより消費されるプロデューサのセットの構成と管理が複雑になります。しかし、状況により使用が許される場合、それは、Frameworkアプリケーションにより公開される情報のセキュリティを保証する、SOAアーキテクチャの重要な要素となります。

Oracle WebCenter Frameworkでは、(セキュリティ・トークンおよびメッセージ本体をデジタル署名して真正性と整合性を保証するための)次のトークン・プロファイルがサポートされています。

  • パスワードなしのユーザー名トークン

  • パスワード付きユーザー名トークン

  • SAMLトークン(プロデューサがサブジェクト・アサーションを確認するために使用する送信者保証方式を使用)

セキュリティ・トークンおよびSOAPメッセージ本体をデジタル署名すると、次の目的を達成できます。

コンシューマ認証

ポートレット・プロデューサで機密的な情報(給与明細情報など)を生成する場合、正当なコンシューマからの情報表示リクエストにのみ応答する必要があります。

WS-Securityを使用し、コンシューマによってセキュリティ・トークンおよびメッセージ本体がデジタル署名されるように設定すれば、プロデューサは、正当なコンシューマの公開鍵を使用して署名を検証できます。署名を検証できない場合は、リクエストが不正なコンシューマから発行された可能性があります。デジタル署名の検証を必須にすることで、機密的な情報は正当なコンシューマにのみ送信されます。

アサーションおよびメッセージ整合性

セキュリティ・トークンおよびメッセージ本体をデジタル署名すると、Webサービスのリクエストを発行したコンシューマのアイデンティティを検証するほかにも、トークンとメッセージが改ざんされていないことが保証されます。これにより、介入者攻撃(正当なりクエストが妨害され、セキュリティ・トークン内のユーザー名が別のユーザー名に置換されて、他のユーザーに対して返される給与情報が表示される可能性がある)などの問題が回避されます。トークンをデジタル署名すると、改ざんが不可能になります。トークンを変更すると、プロデューサ・エンドで署名を検証できなくなり、リクエストされた給与情報ではなくSOAPフォルトが返されます。

サポートされているプロデューサ

WS-Security実装は、Oracle WebCenter Suite WSRPコンテナによってサポートされています。その他のWSRPベンダーが、ユーザー名トークンとSOAPメッセージ本体に基づくXMLデジタル署名を使用した、パスワードを使用しないユーザー名トークンのWS-Security構成をサポートしている場合もあります。

セキュリティ・ドメインの意味

この項の説明に従ってセキュアなアイデンティティ伝播を使用する場合は、コンシューマ(Frameworkアプリケーション)に認証されたユーザーのユーザー名が、資格証明の再マッピングや提供なしでプロデューサに伝播されます。ここでは、プロデューサがこのユーザー名を認識していて、関連付けられたセキュリティ・ドメイン内でこのユーザーを見つけられることが暗黙の前提です。したがって、この構成の管理を簡略化するために、コンシューマとプロデューサが同じセキュリティ・プロバイダ(IDストア)を共有していることを確認することを強くお薦めします。

図74-18に、全体的なWSRPポートレット・セキュリティ・アーキテクチャをまとめています。

図74-18 WSRPポートレット・セキュリティ・アーキテクチャ

図74-18の説明が続きます
「図74-18 WSRPポートレット・セキュリティ・アーキテクチャ」の説明

74.17.3 WSRPポートレットのセキュリティの構成

WS-Securityのプロデューサを構成する前に、まず、第61章「ポートレット・プロデューサのデプロイ」で説明されている手順を実行して、標準準拠のポートレット・プロデューサをOracle WebCenter Suite WSRPコンテナにデプロイする必要があります。

プロデューサをデプロイした後は、次の手順を実行して、WS-Securityのプロデューサを構成します。

  • プロデューサ・エンドポイントへのポリシーの添付

  • キーストアの作成

  • プロデューサの構成

  • コンシューマの構成

これらの手順は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「WS-Securityの構成」の章で説明されています。

74.18 PDK-Javaポートレットのセキュリティの実装

この項では、PDK-Javaポートレットで使用できるセキュリティ・サービスについて説明します。

OTNの詳細

この項で参照されているPDKクラスの詳細は、次の「Portlet Development」ページの「Java Doc API」をクリックして、OTNのJavaDocを参照してください

http://www.oracle.com/technology/products/ias/portal/portlet_development_10g1014.html

74.18.1 前提

次の前提は、この項でのタスクを実行するためのものです。

  1. 第60.2項「PDK-Javaポートレットの作成」を読み終えて理解していること。

  2. ウィザードで作成したポートレットがページに正常に追加されている。

74.18.2 PDK-Javaポートレットのセキュリティ機能の概要

この項では、PDK-Javaポートレット・プロデューサの保護に使用できる主な機能について説明します。

74.18.2.1 アイデンティティ伝播

ユーザーが初めてログインするときは、アイデンティティを確認してアクセス権限を取得するためにパスワードを入力する必要があります。

ユーザーが認証されると、プロデューサ・コードは、次のように、HttpServletRequestオブジェクトにあるPortletRenderRequestから、認証されたユーザーのアイデンティティにアクセスできます。

PortletRenderRequest pr = (PortletRenderRequest)request.getAttribute
   (HttpCommonConstants.PORTLET_RENDER_REQUEST);
   String userName = pr.getUser().getName();

このユーザー・アイデンティティを機密性の高い操作に使用する場合、基本的なメッセージ認証を使用してアイデンティティ・アサーションの整合性を確認するようにこのプロデューサが構成されているかどうかを確認することが重要です。

74.18.2.2 認可

認可によって、特定のユーザーがポートレットの表示または対話を行えるかどうかが判断されます。ポートレットへのアクセスを制限する方法の詳細は、第74.18.4項「ポートレットのセキュリティ・マネージャ」を参照してください。

74.18.2.3 メッセージ・レベルのセキュリティ

これまでに説明したユーザー認証と認可では、プロデューサが受信したメッセージの信頼性までは確認されません。プロデューサを完全に保護するには、プロデューサとの通信も保護する必要があります。通信が保護されていないと、誰かがアプリケーション・インスタンスを装い、プロデューサをだまして機密情報を返信させる恐れがあります。通信セキュリティには、次の3種類があります。

  • サーバー認証では、プロデューサへのアクセスを少数の認証されているマシンに制限します。この方法では、受信したHTTPメッセージのIPアドレスまたはホスト名をトラステッド・ホストのリストと比較します。リストにIPアドレスまたはホスト名がある場合、メッセージはプロデューサに渡されます。リストにないと、そのメッセージはプロデューサに達する前に拒否されます。

  • メッセージ認証では、コンシューマ認証とメッセージ整合性が提供されます。ここでは、メッセージをデジタル署名するために、クライアント(Portal Frameworkアプリケーション)およびプロデューサに既知の共有鍵が使用されます。詳細は、第74.18.5項「メッセージ認証」を参照してください。

  • メッセージの暗号化は、アプリケーションとプロデューサ間の通信にHTTPSプロトコルを使用することによって行われます。メッセージは高度に暗号化され、その中でデータが保護されます。暗号化によって高水準のセキュリティを確保できますが、メッセージごとに追加処理が必要になるため、パフォーマンスが低下します。

  • ユーザー入力のエスケープでは、アプリケーションはXSS攻撃から保護するために、ユーザーが入力した任意の文字列をエスケープし、テキストのみとして処理します。XSS攻撃では、攻撃者はユーザー入力フォームを介して悪意のあるスクリプトで渡そうとします。たとえば、ポートレット・タイトルがカスタマイズ可能な場合、攻撃者はタイトル・パラメータ・エントリを使用して、ポートレットにスクリプトまたはコマンドを渡そうとすることができます。このため、デフォルトの動作では、ユーザー入力がエスケープされ、すべての着信スクリプトが使用不可になっています。詳細は、第74.18.6項「ユーザー入力のエスケープ」を参照してください。

74.18.3 シングル・サインオン

ポートレットは、アプリケーションへのウィンドウの役割を果たすことができます。ポートレットにはサマリー情報が表示され、アプリケーションのすべての機能にアクセスする方法が提供されます。ポートレットにはFrameworkアプリケーションにアプリケーションの一部が表示され、通常はユーザーがいくつかのアプリケーション・タスクを実行できます。

アプリケーションでは、ポートレットを介してアプリケーションにアクセスするユーザーを認証する必要があります。次のアプリケーション認証方法があります。

  • 外部アプリケーション。この認証方法では、Oracle Portal (Oracle Portal)ユーザーとアプリケーションのユーザーは異なりますが、アプリケーションのユーザー名とパスワードはOracle Portalユーザーが管理します。

  • アプリケーションによる認証がない場合。この場合は、プロデューサとコンシューマ間の通信がまったく保護されません。

74.18.3.1 外部アプリケーション

外部アプリケーションでは、Frameworkアプリケーションとは異なる認証サーバーを使用します。これは、ユーザーがFrameworkアプリケーションにログインしている場合、そのユーザーを、ユーザー名やパスワードを入力せずに、外部アプリケーションにもログインできるようにすることを意味します。

ユーザーの認証を管理しているアプリケーションは、管理者がそのアプリケーションを外部アプリケーションとして登録している場合、WebCenter Frameworkと柔軟に統合できます。以前にWebCenter Frameworkによって認証されたユーザーが初めて外部アプリケーションにアクセスすると、WebCenter Frameworkでは、その外部アプリケーションを使用してユーザーの認証を試みます。認証プロセスでは、そのアプリケーションの登録情報と、ユーザーのユーザー名とパスワードとを結合するHTTPリクエストが送信されます。ユーザーがまだその外部アプリケーションのユーザー名とパスワードを登録していない場合は、認証リクエストを行う前に、必要な情報の入力がユーザーに要求されます。ユーザーが外部アプリケーションのユーザー名とパスワードを入力すると、WebCenter Frameworkでは、新しいユーザー名とパスワードがFrameworkアプリケーションのユーザー名にマップされ、格納されます。格納された情報は、次回ユーザーが外部アプリケーションによる認証が必要なときに使用されます。

外部アプリケーションの利点は次のとおりです。

  • ユーザーはシングル・サインオンを利用できます。ただし、ユーザーは異なるユーザー名やパスワードを保持する必要があります。さらに、外部アプリケーションのユーザー名のマッピングも保持する必要があります。

  • ユーザー・リポジトリおよびOracle Single Sign-Onに依存せずに、複数のポータルと統合できます。

  • アプリケーションのソース・コードへのアクセス権限が不要です。

外部アプリケーションの不利な点は次のとおりです。

  • ポータルと同じユーザー・リポジトリを共有しません。このため、エンド・ユーザーによるユーザー情報の管理が必要です。

  • ユーザー名とパスワードは、Secure Sockets Layer (SSL)を実装しないかぎり、プレーン・テキストでプロデューサに送信されます。

74.18.3.2 アプリケーションによる認証がない場合

プロデューサはリクエストを送信するFrameworkアプリケーション・インスタンスを完全に信頼します。プロデューサは、ユーザーがログインしているかどうかの確認やポータル・ユーザー名の確認はできますが、アプリケーションによるユーザーの認証は行われていません。

アプリケーションによる認証がない場合の利点は次のとおりです。

  • 最も簡単な形式で統合し、最も短時間で実装できます。

アプリケーションによる認証がない場合の不利な点は次のとおりです。

  • 最も低いセキュリティ・レベルになります。

  • WebCenter Portal Frameworkアプリケーションとの最も弱い統合になります。

74.18.4 ポートレットのセキュリティ・マネージャ

ポートレットのセキュリティ・マネージャをプロデューサ内に実装し、ユーザーの詳細に応じてポートレットへのアクセスを制限できます。ユーザーがポートレット・インスタンスを含むページを表示すると、セキュリティ・マネージャによって、そのユーザーにポートレットを表示する適切な権限があるかどうかが判断されます。プロデューサでアクセス制御メソッドを実装することで、適切な権限のないユーザーはポートレットからコンテンツを取得できない(つまり、ポートレットを表示しない)ように制限します。ユーザーの詳細や設定項目など指定の特性が認可ロジックを通過した場合のみ、そのユーザーはコンテンツを取得できます。プロデューサでポートレットのセキュリティ・メソッドを実装しない場合は、偽名や認証されていない名前であっても、すべてのユーザー名が通過する可能性があります。

AuthLevelSecurityManagerは、認可レベルに関する次の情報にアクセスできます。

  • 強い認証

    ユーザーはPortal Frameworkアプリケーションにサインインしたことがあり、そのセッションのコンテキストでポートレットをリクエストしています。

  • パブリックまたは認証なし

    ユーザーは現行セッションのコンテキスト内でログインしたことがなく、以前にログインしたことを示す永続的なCookieもありません。

これらのセキュリティ・サービスをJavaポートレットに組み込むには、provider.xmlを更新して、セキュリティ・レベルをstrong、weakまたはpublicに設定する必要があります。次のXMLをprovider.xml</portlet>タグの直前に挿入してください。

<securityManager class="oracle.portal.provider.v2.security.AuthLevelSecurityManager">
   <securityLevel>strong</securityLevel>
</securityManager>

provider.xmlを変更した後は、プロデューサをリフレッシュします。

OTNの詳細

provider.xmlの構文の詳細は、OTNでプロデューサのJavaDocを参照してください。

http://www.oracle.com/technology/products/ias/portal/html/javadoc/xml_tag_reference_v2.html

74.18.4.1 独自のセキュリティ・マネージャの実装

PDKに付属する実装では提供されない特別なセキュリティ対策がポートレットに必要な場合は、独自のカスタムPortletSecurityManagerコントローラ・クラスを指定する必要があります。そのためには、oracle.portal.provider.v2.security.PortletSecurityManagerクラスを拡張し、インタフェースで指定されている2つのメソッドに対して実装を提供します。次に、XMLプロデューサ定義でsecurityManagerコントローラ要素のクラス属性を新しいクラス名に置き換え、子要素を適切に構成します。

74.18.5 メッセージ認証

メッセージ認証ではデジタル署名を使用します。この署名は、Hashed Message Authentication Code (HMAC)アルゴリズムを使用し、ユーザー情報、共有鍵およびUTC(協定世界時)タイムスタンプを基にして生成されます。プロデューサは、共有鍵の独自のコピーを使用してメッセージを認証します。この手法は、クライアント資格証明のかわりに、プロデューサとのSecure Sockets Layer (SSL)通信で使用できます。

キャッシュを目的として、セッションが設定されるたびに表示リクエストの署名が計算されるため、メッセージ認証を使用するプロデューサでは常にプロデューサ・セッションを有効にしておく必要があります。これは同時に、パフォーマンスとセキュリティとの間にトレードオフの関係があることを示しています。セッション・タイムアウトを短くするほどメッセージが不正に再送される可能性も低くなりますが、プロバイダ・セッションの再確立に関連するパフォーマンスのオーバーヘッドが発生します。

セキュリティや管理上の問題が発生する可能性があるため、1つのプロデューサ・インスタンスで複数の共有鍵はサポートできません。たとえば、共有鍵のコピーの1つがなんらかの方法で侵害された場合、プロデューサの管理者は鍵を作成してすべてのアプリケーション・クライアントに配布し、クライアントはそのプロデューサ定義を更新する必要があります。この問題を回避するには、異なるプロデューサ・サービスをデプロイして、サービスごとに一意の共有キーを指定します。各プロデューサ・サービスには独自のデプロイ・プロパティ・ファイルがあるため、各サービスは他のサービスとは無関係に構成されます。同じプロデューサ・アダプタ内に複数のプロデューサ・サービスをデプロイすることによるオーバーヘッドは比較的小さいものです。

署名要素は、メッセージの傍受や再送信に対する保護を提供しますが、メッセージ・コンテンツの傍受や読取りを防ぐための処理は何も行いません。しかも、メッセージはプレーン・テキストで送信されます。メッセージの内容を認可されていない人々に読み取られることが心配な場合は、これをSSLと組み合せて使用し、メッセージを暗号化する必要があります。

メッセージ認証の利点は次のとおりです。

  • プロデューサによって受信されたメッセージが正当なFrameworkアプリケーション・インスタンスから送信されたものであることが保証されます。

メッセージ認証の不利な点は次のとおりです。

  • プロデューサが複数のポータルを提供する場合は、管理上の問題が発生します。セッションのタイムアウトを短くすることによってセキュリティを非常に高くした場合は、パフォーマンス上の影響があります。

74.18.6 ユーザー入力のエスケープ

テキストにエスケープせずにユーザー入力を受け付けると、攻撃者がユーザー入力フォームを介して悪意のあるスクリプトを渡そうとするXSS攻撃を受ける危険があります。たとえば、ポートレット・タイトルがカスタマイズ可能な場合、攻撃者はタイトル文字列を使用して、ポートレットにスクリプトまたはコマンドを渡そうとすることができます。PDK-Javaでは、そのような攻撃からポートレットを保護できるように、次の機能が提供されています。

74.18.6.1 デフォルト・コンテナ・エンコーディング

ポートレット・タイトル内のスクリプトが実行されないように、フレームワーク・デフォルト・コンテナ・レンダラ・クラスはすべてのスクリプト文字をエンコードします。このデフォルトの動作は、JNDI変数escapeStringsで制御されます。trueに設定すると、ポートレット・タイトル内のマークアップ・タグが表示タグ文字としてレンダリングされます。たとえば、<i>title</i>というタイトルのカスタマイズは、titleではなく<i>title</i>としてレンダリングされます。このモードは安全ですが、そのようにしたくない場合は、そのプロデューサのescapeStringsfalseに設定できます。

escapeStringsはプロデューサ内のすべての論理プロデューサに適用されます。escapeStringsの値は、Fusion Middleware Controlコンソールから、他のJNDI変数と同じように設定できます。詳細は、第60.3.5.2項「JNDI変数値の設定」を参照してください。

74.18.6.2 エスケープ・メソッド

カスタマイズされた値をレンダリングするコードがある場合、XSS攻撃を避けるためにそれらの入力値を適切にエスケープする必要があります。これは、どのモードでページをレンダリングするコードでも同様です。PDK-Javaではこのための2つの新しい静的なメソッドが提供されています。Javaクラスoracle.portal.provider.v2.url.UrlUtilsにある次のようなメソッドです。

  • public static escapeString(string_text)は、与えられた文字列内の任意のスクリプト文字をエスケープします。たとえば、より小さい(<)は&ltとなります。このメソッドはescapeStrings JNDI変数による影響を受けず、安全であり、使用を推奨されています。

  • public static escapeStringByFlag(string_text)は、与えられた文字列内の任意のスクリプト文字をエスケープします。このメソッドはescapeStrings JNDI変数によって制御されるので、安全性が低く、使用を推奨されていません。

例:

title = UrlUtils.escapeString(data.getPortletTitle());

74.19 WebCenter Portal偽装ELおよびAPIの使用

WebCenter Portal偽装では、一連の式言語式(EL)およびマッチングJava APIが提供され、偽装セッションをカスタマイズするため使用できます。WebCenter Portal偽装の管理の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalの管理の「偽装の管理」の章を参照してください。(偽装者による)偽装セッションの開始および(被偽装者による)偽装セッションの許可の手順は、『Oracle Fusion Middleware Oracle WebCenter Portalの使用』の「WebCenter Portal偽装の使用」の章を参照してください。

公開されるELは、次のとおりです。

偽装および他のELの詳細は、付録F「式言語式」を参照してください。

oracle.webcenter.security.common.WCSecurityUtilityでは、次のパブリックAPIが公開されます。

これらのAPIおよびその他のAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

例74-10 getCurrentImpersonatorId API

import oracle.webcenter.security.common.WCSecurityUtility;
if (WCSecurityUtility.isUserInImpersonationSession())
{
  String impersonator = WCSecurityUtility.getCurrentImpersonatorId();
  String currentUser = ADFContext.getCurrent().getSecurityContext().getUserName();
  //Code to be executed when the user is in an impersonation session.
  ..log("User " + impersonator + " is impersonating as user " + currentUser); 
}

74.20 セキュリティ問題のトラブルシューティング

この項では、Portal Frameworkアプリケーションのセキュリティ関連の問題の診断に役立つトラブルシューティング情報を提供します。

この項には、次のトラブルシューティング項目が含まれています。

74.20.1 使用されているコンテンツ・リポジトリのデータ・コントロール・メソッドを含むページの実行時に表示されるエラー・メッセージ

問題

コンテンツ・リポジトリのデータ・コントロール・メソッドを含むページを実行すると、次のエラー・メッセージが表示されます。

"Unable to locate the credential for key extapp in JPS credential store."

原因

資格証明は、データ・コントロール・メソッドを使用するページにアクセスする前に、パスワードの変更タスク・フローを使用して明示的にプロビジョニングする必要があります。

解決方法

データ・コントロールは単なるモデルであり、資格証明プロビジョニングに対処するユーザー・インタフェース・レベルでは何も実行できないため、リダイレクトに対応するエラー・ハンドラをユーザー・インタフェースに記述する必要があります。エラー・ハンドラの記述の詳細は、『Oracle Application Development Framework開発者ガイド』のエラー処理のカスタマイズに関する項を参照してください。

エラー・ハンドラの例を次に示します。

public class ErrorHandler
  extends DCErrorHandlerImpl
{
  public ErrorHandler(boolean b)
  {
    super(b);
  }

  public ErrorHandler()
  {
    super(true);
  }

@Override
  public void reportException(DCBindingContainer formBnd, Exception ex)
  {
   if (ex instanceof AdapterException)
    {
      AdapterException ae = (AdapterException) ex;
      if (ae.getCause() != null &&
          ae.getCause() instanceof ExtAppLoginException)
      {
        ExtAppLoginException eale = (ExtAppLoginException) ae.getCause();
        Throwable t = eale.getCause();
         if (t != null &&
            (t instanceof ExtAppCredentialNotFoundException) ||
            (t instanceof ExtAppInvalidUserCredential))
        {
          String extAppId = eale.getExternalAppId();
          showCredentialsProvisioningDialog(extAppId);
          return;
        }
      }
    }
    super.reportException(formBnd, ex);
  }

  private void showCredentialsProvisioningDialog(String extAppId)
  {
    FacesContext context = FacesContext.getCurrentInstance();
    // Create the dialog UIViewRoot
    ViewHandler viewHandler = context.getApplication().getViewHandler();
    UIViewRoot dialog =
      viewHandler.createView(context,
      "/oracle/adfinternal/extapp/view/pages/CredentialProvisionerDialog.jspx");

     HashMap<String, Object> properties = new HashMap<String, Object>();
     properties.put("width", new Integer(500));
     properties.put("height", new Integer(350));

     HashMap<String, Object> parameters = new HashMap<String, Object>();
     parameters.put("oracle.extapp.id", extAppId);

     RequestContext reqContext = RequestContext.getCurrentInstance();
     //launched from the button, need to specify this for the return listener
     //to be called.
     reqContext.launchDialog(dialog, parameters, null, true, properties); 
  }
}