Oracle® Fusion Middleware Oracle WebCenter Portalの管理 11gリリース1 (11.1.1.8.3) E51441-03 |
|
前 |
次 |
この章では、Oracle WebCenter Portalのパーソナライズを構成および管理する方法について説明します。
この章には次の項が含まれます:
権限: この章のタスクを実行するには、Oracle WebLogic Server管理コンソールでWebLogic Serverの
ロールと権限の詳細は、第1.8項「管理操作、ロールおよびツールの理解」を参照してください。 |
Oracle WebCenter Portalのパーソナライズを使用すると、ポータル・アプリケーションのユーザー・エクスペリエンスを動的に導出できます。パーソナライズは、定義された入力データ・ソースを評価し、その評価に基づいてデシジョンを生成し、この情報を宣言的に定義されたパーソナライズ・シナリオに適用します。パーソナライズでは、たとえば、人事管理データベース内のユーザーに関する情報に基づいてコンテンツを返したりアプリケーション・フローを変更することで、その特定のユーザー向けのアプリケーション・エクスペリエンスを提供できます。
パーソナライズは、WC_Utilities
サーバーのwc_domain
にアプリケーションとしてインストールされます。クライアント・アプリケーションは、リモートからHTTP経由でRESTfulサービスを使用してパーソナライズにアクセスします。デザインタイムJDeveloperツールを使用してプロパティ・サービスおよびコンダクタのアーティファクトを作成し、それをリモートからRESTコールで実行できます。パーソナライズは、アプリケーションを最初に作成するときに、JDeveloper統合ドメインでパーソナライズ・テクノロジ・ライブラリを含むプロジェクトにも使用できます。評価目的および反復開発において、このドメインはパーソナライズを最もすばやく簡単に探索できる手段です。パーソナライズのアーキテクチャとサービスの詳細は、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』の「Oracle WebCenter Portalアプリケーションのパーソナライズ」を参照してください。
この項では、パーソナライズのシステム要件と依存性について説明します。
パーソナライズ・コンダクタ・シナリオでCMIS (Content Management Interoperability Services)データ・プロバイダ、アクティビティ・グラフ・データ・プロバイダまたはピープル・コネクション・ロケータを使用している場合は、Oracle WebCenter Portalをインストールする必要があります。高可用性環境にかぎり、Coherenceも必要です。
パーソナライズREST APIは、第24.2項「RESTの有効化に必要な手動構成の実行」で説明するサーバー側の2つの構成を実行した後で使用できるようになります。 セキュリティ・トークンの詳細は、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』のWebCenter Portal REST APIのセキュリティに関する考慮事項に関する項も参照してください。
CMISプロバイダ、アクティビティ・グラフ・プロバイダ、ピープル・コネクション・ロケータまたはカスタム・プロバイダを使用する場合は、これらを第25.4項「プロバイダの構成」の説明に従って構成する必要があります。
ポータルまたはPortal Frameworkアプリケーションでコンテンツ・プレゼンタを使用してコンテンツを表示する場合は、第25.6項「コンテンツ・プレゼンタの構成」の説明に従ってコンテンツ・プレゼンタを構成して、シナリオの結果が表示されるようにする必要もあります。
パーソナライズでは、WebCenter Portalドメイン内の様々な管理対象サーバー間のシングル・サインオン(SSO)を実現するためにトラスト・サービスが使用されます。user_projects/applications/wc_domain
ディレクトリにあるWLSTスクリプトのconfigureTrustWCPS.py
とconfigureConnectionsWCPS.py
を使用して、トラスト・サービスを構成する必要があります。JDeveloperの統合ドメインの場合は、DefaultDomain/scrpts-wcps
ディレクトリにある単一のスクリプト(configureWCPS.py
)のみを使用します。このスクリプトによるトラスト・サービスおよびシングル・サインオンの構成の詳細は、第25.7項「シングル・サインオンの構成」を参照してください。
パーソナライズは、WLSセキュリティ・レルム内で構成されているどのユーザー認証サービスのソースとも互換性があります。したがって、ドメインのデフォルトのアイデンティティ・ストアおよびポリシー・ストアと資格証明ストアを使用できます。
ピープル・コネクション・ロケータまたはアクティビティ・グラフ・データ・プロバイダを使用している場合、各ユーザーがWebCenter Portalユーザーとしても構成されている必要があります。
パーソナライズRESTサービスには、事前構成されたパーソナライズWebアプリケーションを介してアクセスしますが、このアプリケーションはresourceIndex
を除くすべてのリソース(すべてのURI)に対して認証アクセスを要求します。これらの制約を変更して、匿名アクセスが必要なシナリオを実行する際のセキュリティを下げたり、新しいシナリオを作成できないようにセキュリティを強化したりできます。デフォルトのセキュリティ設定の変更については、第25.8項「デフォルトのセキュリティ設定のオーバーライド」を参照してください。
WebCenter Portalでは、トラスト・サービスがパーソナライズRESTコールにシングル・サインオンを提供します。このため、WLS TrustServicesIdentityAsserterを構成する必要があります(事前構成されていません)。これは、WLSコンソールを使用するか、user_projects/applications/wc_domain
ディレクトリにあるWLSTスクリプトのconfigureTrustWCPS.py
とconfigureConnectionsWCPS.py
を使用して手動で実行できます。JDeveloperの統合ドメインの場合は、DefaultDomain/scrpts-wcps
ディレクトリにある単一のスクリプト(configureWCPS.py
)を使用します。
必要に応じて、WebCenter Portalアプリケーションからパーソナライズ・サーバーおよびシングル・サインオンを指定したパーソナライズ・プロバイダへの接続を保護することもできます。シングル・サインオンの構成の詳細は、第25.7項「シングル・サインオンの構成」を参照してください。アプリケーションによってプロパティ・サービス・データへのアクセスも制限するには、フィルタ(IPropertyPermission)を使用して、プロパティ・データへのアクセスを事前に認可します。
各シナリオでは、基本ロール評価およびテストをサポートするデフォルトの関数ライブラリを使用して、シナリオへのアクセスを認証できます。
デフォルトでは、パーソナライズは管理対象サーバーに有効範囲が設定されたキャッシュを使用します。つまり、管理対象サーバー外にキャッシュされたデータに変更が加えられた場合、その変更はパーソナライズの追加インストールでは認識されません。パーソナライズのクラスタ化された(複数の)デプロイでは、キャッシュがクラスタに対応するようにCoherenceを構成できます。
この項では、WebCenter Portalのパーソナライズのデフォルトのプロバイダとその他のオプションの拡張について、およびそれらをパーソナライズ・プロジェクトに統合するために必要な構成について説明します。
デフォルトのパーソナライズ・データ・プロバイダを使用すると、既存のWebCenter Portalツールに基づいてシナリオを記述したり、プロファイル・データにアクセスしたりできます。これらのWebCenter Portalツールは、RESTful Webサービスを介してデータを公開します。パーソナライズ・データ・プロバイダは、これらのWebサービスのRESTクライアントとして機能するので、こうした外部データ・リソースに基づくシナリオをJDeveloper内で簡単に作成できます。独自のデータ・プロバイダおよびプロパティ・ロケータの実装を用意して、独自の外部データ・ソースを統合することもできます。
CMISプロバイダ
CMISプロバイダは、パーソナライズ・プロジェクトでオプションのデータ・ソースとして使用できるデフォルトのプロバイダです。WebCenter Portalコンテンツ・サービスは、CMIS (Content Management Interoperability Services)標準を使用して公開されます。CMIS RESTサービスはWC_Spaces
サーバー上で稼働し、(別途の構成の選択に基づいて)Oracle WebCenter Content Serverへのアクセスを提供します。
パーソナライズ・ユーザーがポータル・ユーザーでもある場合は、ポータルを通して格納されているユーザー・コンテンツにシナリオからアクセスできます。Content Serverの詳細は、第9章「コンテンツ・リポジトリの管理」を参照してください。CMISプロバイダの構成の詳細は、第25.4.2項「CMISプロバイダの構成」を参照してください。
アクティビティ・グラフ・データ・プロバイダ
アクティビティ・グラフ・データ・プロバイダは、パーソナライズ・プロジェクトでオプションのデータ・ソースとして使用できるデフォルトのプロバイダです。ポータルまたはPortal Frameworkアプリケーションからのアクティビティ・ストリーム情報は、アクティビティ・グラフを通じて公開されます。アクティビティ・グラフRESTサービスはWC_Spaces
サーバー上で稼働し、アクティビティ・グラフによって作成された、アクティビティ・ストリームに基づく推奨へのアクセスを提供します。
パーソナライズ・ユーザーがポータル・ユーザーでもある場合、アクティビティ関連の推奨(ポータルのContent-type用)にシナリオからアクセスできます。アクティビティ・グラフ・サービスの詳細は、第10章「アクティビティ・グラフの管理」を参照してください。アクティビティ・グラフ・プロバイダの構成の詳細は、第25.4.3項「アクティビティ・グラフ・プロバイダの構成」を参照してください。
Oracle People Connectionsロケータ
ピープル・コネクション・ロケータは、パーソナライズ・プロジェクトでオプションのデータ・ソースとして使用できるロケータです。ピープル・コネクションの情報は、ピープルWebサービスを通じて公開されます。ピープル・コネクションRESTサービスはWC_Spaces
サーバー上で稼働し、ポータルのコンテキストに作成されたソーシャル・プロファイル・データへのアクセスを提供します。パーソナライズ・ユーザーがポータル・ユーザーでもある場合、ピープル・プロファイル・データにシナリオからアクセスできます。ピープル・コネクションの詳細は、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』の「ピープル・コネクションの統合」の章を参照してください。他のデフォルトのデータ・プロバイダとは異なり、ピープル・コネクションWebサービスには、汎用のプロパティ・サービス・データ・プロバイダを介したIPropertyLocator拡張インタフェースを使用してアクセスします。ピープル・コネクション・プロバイダの構成の詳細は、第25.4.4項「Oracle People Connectionsロケータの構成」を参照してください。
パーソナライズでは、OPSS (Oracle Platform Security Services)の新機能をシングル・サインオンに利用します。パーソナライズの最も単純なユースケースを除くすべてのユースケースで、この機能をここで説明する構成手順に従って有効化する必要があります。
次の場合は、OPSSトラスト・サービスを構成する必要がありません。
RESTクライアントからコンダクタおよびプロパティ・サービスと直接対話する場合
コンダクタおよびプロパティ・サービスをパーソナライズ・クライアント・ライブラリが、パーソナライズと同じドメインにデプロイされているカスタムJEE Webアプリケーションから使用している場合で、JSessionIdが両方のWebアプリケーションに対して構成されているとき(多数の例外がログに記録されるのでデバッグが困難になります)
次の場合は、OPSSトラスト・サービスを構成する必要があります。
パーソナライズが本番デプロイメントの一部である場合
デフォルトのデータ・プロバイダ(アクティビティ・グラフ、CMISおよびピープル・コネクション・ロケータ)を必要とするパーソナライズ・シナリオがある場合
コンダクタおよびプロパティ・サービスをパーソナライズ・クライアント・ライブラリが、パーソナライズと同じドメインにデプロイされているカスタムJEE Webアプリケーションから使用している場合
ドメイン間のトラスト(つまり、WC_domain
のCMISプロバイダを使用するように構成された統合ドメイン接続)が必要な場合
この項には次のサブセクションが含まれます:
デフォルトのOracle WebCenter Portalインストールにはパーソナライズ・ドメイン拡張テンプレートが含まれており、このテンプレートは2つのWLST Pythonスクリプト(configureTrustWCPS.py
とconfigureConnectionsWCPS.py
)を次のドメイン・ホームにインストールします。
oracle/user_projects/applications/wc_domain/scripts
これらのスクリプトおよび関連するconfigureWCPS.properties
ファイルには、使用方法の説明が記載されています。これらはサンプル・スクリプトであり、実行する前にプロパティ・ファイルを編集して、少なくともocs.server
名(通常はContent Server)、spaces.server.host
名およびfmwconfig.location
を指定する必要があります。これらの値はOracle WebCenter Portalインストールごとに一意のものなので、編集する必要があります。それ以外の値もローカル環境に応じて変更が必要な場合があります(たとえば、マシン・ポート番号はそれぞれ異なる可能性があります)。
configureConnectionsWCPS.py
スクリプトは、デフォルトのパーソナライズ接続情報(つまり、アクティビティ・グラフ、CMISおよびピープル・コネクションの接続情報)を設定します。このスクリプトはWCPS.py
ライブラリを使用しますが、このライブラリはOracle WebCenter Portalドメインにのみインストールされています(統合WLSドメインにはインストールされていません)。ただし、Oracle WebCenter PortalドメインでconfigureConnectionsWCPS.py
を実行して、(t3 URLを使用して)統合WLSドメインを指すようにさせることができます。
注意:
|
WCP_ORACLE_HOME/common/bin/wlst.sh
コマンド・ファイル($WCP_ORACLE_HOME/common/bin/wlst.sh configureconnectionsWCPS.py
など)を使用して、これらのスクリプトの環境変数を正しく設定する必要があります。
各スクリプトを実行したら、管理サーバーを含むドメイン内の全サーバーを再起動します。
構成のテスト
トラスト・サービスのシングル・サインオンの動作を確認するには、カスタムJEE Webアプリケーションから(パーソナライズ・クライアント・ライブラリを使用して)コンダクタまたはプロパティ・サービスを呼び出すか、パーソナライズ接続(アクティビティ・グラフまたはCMISデータ・プロバイダなど)を使用するシナリオを実行するか、ピープル・コネクション・ロケータを使用してピープル・コネクションのプロパティにアクセスする必要があります。
前述のいずれかを実行すると、次のようなデフォルトのログ・エントリがWC_Utilities-diagnostic.log
に記録されます。
[2010-11-10T07:30:40.362-08:00] [WC_Utilities] [NOTIFICATION] [] [oracle.jps.trust] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [ecid: 0000IkqQG4NBh49LJeCCyf1CqfXw000008,0] [APP: wcps-services#11.1.1.4.0] Token issue operation
また、WC_Spaces-diagnostic.log
にも次のようなデフォルトのログ・エントリが記録されます(そこでサービスにアクセスしている場合)。
[2010-11-10T07:30:40.236-08:00] [WC_Spaces] [NOTIFICATION] [] [oracle.jps.trust] [tid: [ACTIVE].ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [ecid: d461d36d4a552b90:-1fe62a5d:12c365bb19b:-8000-000000000000002c,0] [APP: webcenter#11.1.1.4.0] Token validate operation.
JDeveloperインストーラには、次のディレクトリにある統合WLSドメインを構成するための別のPythonスクリプトも付属しています。
DefaultDomain\scrpts-wcps\
このスクリプトは、手動でもJDeveloperの「外部ツール」機能を使用しても実行できます。
デフォルト以外のユーザーまたはパスワードを使用している場合は、プロパティ・ファイルを編集してください。統合WLSドメインを作成して起動したら、scrpts-wcps
ディレクトリからスクリプトを実行します。
Oracle\MiddlewareRC8\oracle_common\common\bin\wlst.cmd configureWCPS.py configureWCPS.properties
注意:
configureWCPS.propertiesファイルで、次の行を変更する必要があります。
|
統合WLSドメインを再起動します。
構成のテスト
トークン発行操作およびトークン検証操作を確認するには、デフォルトのロギング・レベルでは不十分です。次に示すように、JDeveloperの「Oracle Diagnostic Loggingの構成」機能を使用して、oracle.jps.trust
ロガーに移動し、レベルをFinest
に設定します。
「表示」メニューの「アプリケーション・サーバー・ナビゲータ」を選択します。
「アプリケーション・サーバー」を開きます。
「IntegratedWeblogicServer」を右クリックして、「Oracle Diagnostic Loggingの構成」を選択します。
ロギング・レベルをFinest
に設定します。
コンダクタまたはプロパティ・サービスを呼び出すカスタムJEE Webアプリケーションを含むシナリオを実行します。
トラスト・サービスはドメイン間トラストをサポートしています。つまり、複数の異なるWLSドメインにキーストアが作成されている場合、クライアントはドメイン「A」でトークンを割り当て、そのトークンを使用したHTTPリクエストをドメイン「B」に対して発行し、シングル・サインオンによるドメイン「B」でのユーザー/リクエストの検証および認証をアイデンティティ・アサータに実行させることができます。ただし、重要な前提として、ドメイン「A」内のユーザーと同じユーザーがドメイン「B」に存在する必要があります。
デフォルトでは、統合WLSドメインでconfigureWCPS.py
スクリプトを実行すると、extDomain.cer
という名前の証明書が生成されます。統合WLSドメインとOracle WebCenter Portalドメインの間のドメイン間トラストを有効にする手順は次のとおりです。
extDomain.cer
をOracle WebCenter Portalドメイン(wc_domain
)インストールにコピーして、そこでインポートします。extDomain.cer
ファイルをscriptsディレクトリにコピーします。
oracle/user_projects/applications/wc_domain/scripts
次のコマンドを入力して証明書をインポートします。
keytool -importcert -alias orakey1 -file extDomain.cer -keystore ../../../../wlserver_10.3/wc_domain/config/fmwconfig/default-keystore.jks -storepass weblogic
Oracle WebCenter Portalドメイン内の各サーバーを再起動します。
構成のテスト
ドメイン間トラストを検証する最も簡単な方法は、まず、WebCenter PortalドメインのWC_Spaces
サーバーを指すピープル・コネクション・パーソナライズ接続を統合WLSドメインに作成します。次に、ピープル・コネクションのプロパティ値を取得する簡単なシナリオを作成して、統合WLSドメインにデプロイします。最後に、前述の「トークン検証操作」というメッセージがWC_Spaces
サーバーのログに記録されていることを確認します。
WebCenter Portalのパーソナライズには、アクティビティ・グラフ用およびContent Server用のデフォルトのプロバイダと、ピープル・コネクション用のロケータが用意されています。これらのプロバイダのいずれかを使用するシナリオでは、次の各項の説明に従って、WLSTスクリプトのconfigureWCPS.py
を使用してプロバイダを構成する必要があります。カスタムのプロバイダまたはロケータを使用している場合は、カスタム・プロバイダの構成に関する項の説明に従って、それらも構成する必要があります。シナリオでプロバイダやロケータを使用していない場合は、プロバイダやロケータを構成する必要はありません。
デフォルトのプロバイダを使用しないシナリオや、カスタムのプロバイダまたはOracle Technology Network (OTN)からダウンロードしたプロバイダのみを使用するシナリオも開発できます。また、JDeveloper統合ドメイン内のみで開発する場合は、通常、これらのWC_Spaces
ベースのサービスにはアクセスできません(WebCenter Portalは統合ドメイン内では稼働しないため)。拡張構成(configureWCPS.py
でもサポートされています)を使用すれば、WC_Spaces
ドメイン内のWebCenter Portalサービスに統合ドメインのパーソナライズ・サーバーからアクセスできます。これにはドメイン間トラストを使用するので、プロバイダ接続を構成する必要があります。WC_Spaces
ドメイン内にあるconfigureTrustWCPS.py
スクリプトとconfigureConnectionsWCPS.py
スクリプトを使用するか、DefaultDomain/scrpts-wcps
ドメイン・ディレクトリにあるJDeveloperの統合WLSドメイン用のconfigureWCPS.py
スクリプトを使用して、適切なWLS管理サーバーをポイントすることにより、対応するドメインを構成します。
この項では、WLSTおよびFusion Middleware Controlを使用して、接続情報を作成または変更する方法について説明します(wcps-connections.xml
に格納)。また、カスタム・プロバイダを構成するためのカスタム構成クラスを記述する方法についても説明します。
この項には次のサブセクションが含まれます:
パーソナライズ接続情報は、ドメイン・ディレクトリ内の次の場所にあるwcps-connections.xml
に保持されています。
<domain directory>/config/fmwconfig/wcps-connections.xml
このファイルを直接編集することはお薦めできませんが、接続情報を変更するには、次のように複数の方法があります。
WLST: WLSTコマンドを使用してスクリプトを作成することにより、接続構成を表すシステムMBeansにアクセスできます。WLSTコマンドを使用して接続設定を構成する方法の詳細は、第25.4.1.3項「WLSTを使用した接続の構成」を参照してください。
Fusion Middleware Control: Fusion Middleware Controlを使用して、パーソナライズとともにデプロイされたJMX MBeansを表示または編集できます。Fusion Middleware Controlを使用して接続設定を構成する方法の詳細は、第25.4.1.4項「Fusion Middleware Controlを使用した接続の構成」を参照してください。
接続プロパティは、次の形式でwcps-connections.xml
に保持されています。
<properties> <property> <name>{property name}</name> <value>{property val}</value> </property>
WLSTまたはFusion Middleware Controlを使用して変更できる接続プロパティと属性を次に示します。各接続プロパティは、接続に使用されるプロバイダまたはロケータに固有のものです。たとえば、CMISプロバイダでは、アクティビティ・グラフ・プロバイダとは異なる接続プロパティが使用されます。
<connection-name>
: この接続の一意の名前。接続は名前によって取得できます。
<connection-type>
: この接続の一意のタイプ。接続はタイプによって取得できます。connection-type
を指定する必要があるのは、カスタム接続の場合のみです。デフォルトのデータ・プロバイダの場合、このフィールドは内部的に設定されています。
<namespace>
: 一般的に、アクセスするシナリオがデプロイされるネームスペースに一致する必要があります。ネームスペースでは、特定のシナリオに対する適切な<connection>を検索する方法をコンダクタが決定します。ワイルドカードの「*」を使用すると、この接続要素をすべてのネームスペースで使用可能にできます。WLSTスクリプト内で指定されない場合、namespace
のデフォルトは「*」になります。
<name>isDefault</name>
: この接続をデフォルトの接続としてマークします(複数が定義されている場合)。これは接続プロパティなので、次の形式になっている必要があります。
<properties> <property> <name>isDefault</name> <value>true</value> </property> </properties>
複数の接続の「isDefault」フラグをtrueに設定できます。この場合、どのデフォルト接続を返すかは個々のプロバイダ次第です。
プロバイダ接続を簡単に構成できるように、一連のパーソナライズWLSTコマンドが用意されています。これらのコマンドを組み合せてスクリプトを作成できます。スクリプトの例が用意されており、これをカスタマイズしたり、直接使用することができます。このサンプル・スクリプトは、プロバイダ接続を設定し、さらにトラスト・サービスを初期化します。
パーソナライズWLSTコマンドはWCP_ORACLE_HOME/common/wlst/WCPS.py
にインストールされており、WCP_ORACLE_HOME/common/bin/wlst.sh
(cmd)スクリプトを使用して呼び出します。
初期状態の各データ・プロバイダは、次の各項で説明する特定のWLSTコマンドでサポートされています。カスタムのデータ・プロバイダについては、汎用のWLSTコマンドを使用して接続を構成します。例:
createWCPSCustomConnection('customConnectionName', 'connectionType', properties={ 'name1': 'value1', 'name2': 'value2' })
パーソナライズWLST接続およびその他のコマンドの全リストは、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のパーソナライズに関する項を参照してください。
Fusion Middleware Controlを使用して、パーソナライズとともにデプロイされたJMX MBeans (アクティビティ・グラフ、Content Serverおよびピープル・コネクションの接続構成MBeans)を表示または編集できます。
接続構成MBeansを表示または編集する手順は次のとおりです。
Fusion Middleware Controlを開き、「パーソナライズ・サービス(Personalization Services)」に移動します。
「WCPS-Services」をクリックします。
「アプリケーション開発」ドロップダウン・メニューから、「システムMBeanブラウザ」を選択します。
「アプリケーション定義のMBean」の下の「MBeanブラウザ」でoracle.wcps.connections
を選択し、変更する接続情報までドリルダウンします。
「属性」タブで、「プロパティ」を選択して接続属性の現在の値を表示します。
「操作」タブで、「setProperty」を選択し、「起動」をクリックして名前/値ペアを変更します。
カスタム構成クラス(@ConnectionConfiguration
という注釈付きのクラス)を実装するには、独自のデータ・プロバイダを記述します。これにより、カスタム・データ・プロバイダがパーソナライズ接続フレームワークを使用して、パーソナライズWLSTスクリプトによって構成された接続情報を取得できるようになります。
データ・プロバイダのカスタム構成クラスについては、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』の「カスタム・データ・プロバイダの実装: 概要」で詳細に説明されています。
統合WLSドメイン以外(つまり、WC_Spaces
ドメイン内)で作業している場合、CMISプロバイダをシナリオで使用するには、まずその接続設定を構成する必要があります。
CMISプロバイダの接続設定は、wc_domain
コンダクタ拡張ディレクトリにあるwcps-connections.xml
に保持されています(ドメインが有効範囲)。このファイルを直接編集することはお薦めできませんが、接続設定を変更するには、次のように複数の方法があります。第25.4.1項「プロバイダ接続設定の作成または変更」で説明している方法のいずれかを使用して、CMISプロバイダの接続設定を構成してください。
接続要素およびプロパティの説明
<connection-name>
: この接続の一意の名前。接続は名前によって取得できます。
<connection-type>cmis.provider.connection</connection-type>
: CMISプロバイダの接続タイプを定義します。
<namespace>
: 一般的に、アクセスするシナリオがデプロイされるネームスペースに一致する必要があります。ネームスペースでは、特定のシナリオに対する適切な<connection>
を検索する方法をコンダクタが決定します。ワイルドカードの「*」を使用すると、この接続要素をすべてのネームスペースで使用可能にできます。
<name>isDefault</name>
: この接続をデフォルトの接続としてマークします(複数の接続が定義されている場合)。
<name>repositoryId</name>
: 使用環境内のコンテンツ・リポジトリと一致するように、このプロパティを変更する必要があります。
<name>path</name>
: 使用環境内のコンテンツ・リポジトリと一致するように、このプロパティを変更する必要があります。指定しない場合のデフォルトは/api/cmis/repository/repositoryId
です。
<name>scheme</name>
: CMIS RESTサービスにアクセスするプロトコル(HTTPまたはSSL用のHTTPS)。明示的に指定しない場合、デフォルトはHTTP
に設定されています。
<name>host</name>
: CMIS RESTサービスをホストするマシンの名前。これは、WC_Spaces
管理対象サーバーのマシン名です。
<name>port</name>
: CMIS RESTサービスをホストするマシンのポート番号。これは、WC_Spaces管理対象サーバーのマシンのポート番号です。
<name>pathTrim</name>
: 明示的に指定しない場合のデフォルトは切捨てなしです。
<name>rewriteUrls</name>
: 「なし」
、「コンシューマ」
または「プロデューサ」
に設定できます。詳細は、RESTプロキシのページを参照してください。ドキュメント・リンクのCMISサーバーからのダイレクトURLが必要な場合、これを「なし」
に設定します。デフォルトはリライトなし(「なし」
)です。
<name>username</name>
: (オプション) CMIS RESTサービスとの接続時に使用するユーザー名。固定のユーザー名への接続を強制するために使用できます。
<name>password</name>
: (オプション) CMIS RESTサービスとの接続時に使用するパスワード。username
と組み合せて、固定のユーザー名/パスワードへの接続を強制するために使用できます。パスワード・アクセスが保護されていないため、開発環境外で使用することはお薦めしません。
<name>timeoutInMillisecs</name>
: CMIS問合せ読取りレスポンスがタイムアウトになるまでの時間(ミリ秒)。
<name>propagateTimeoutExceptions</name>
: trueの場合、タイムアウト例外を伝播します。それ以外の場合は、例外をログに記録し、CMIS問合せレスポンスに対してNULLを返します。
<name>restResourceURL</name>
: restResourceURLは、CMIS RESTサービスのAPIリソースを定義する、REST URLのエンドポイントです。
<property> <name>restResourceURL</name> <value><a target="_blank" href="http://my.webcenter.host:8888/rest/api/resourceIndex">http://my.webcenter.host:8888/rest/api/resourceIndex</a></value> </property>
統合WLSドメイン以外(つまり、WC_Spaces
ドメイン内)で作業している場合、アクティビティ・グラフ・プロバイダに基づくシナリオを使用するには、ローカル環境に応じた接続情報を構成する必要があります。
アクティビティ・グラフの接続設定は、wc_domain
コンダクタ拡張ディレクトリにあるwcps-connections.xml
に保持されています(ドメインが有効範囲)。このファイルを直接編集することはお薦めできませんが、接続設定を変更するには、次のように複数の方法があります。第25.4.1項「プロバイダ接続設定の作成または変更」で説明している方法のいずれかを使用して、アクティビティ・グラフ・プロバイダの接続設定を構成してください。
接続要素およびプロパティの説明
<connection-name>
: この接続の一意の名前。接続は名前によって取得できます。
<connection-type>activity.provider.connection</connection-type>
: アクティビティ・グラフ・プロバイダの接続タイプを定義します。
<namespace>
: 一般的に、アクセスするシナリオがデプロイされるネームスペースに一致する必要があります。ネームスペースでは、特定のシナリオに対する適切な<connection>
を検索する方法をコンダクタが決定します。ワイルドカードの「*」を使用すると、この接続要素をすべてのネームスペースで使用可能にできます。
<name>isDefault</name>
: この接続をデフォルトの接続としてマークします(複数の接続が定義されている場合)。
<name>scheme</name>
: アクティビティ・グラフRESTサービスにアクセスするプロトコル(HTTPまたはSSL用のHTTPS)。明示的に指定しない場合、デフォルトはHTTP
に設定されています。
<name>host</name>
: アクティビティ・グラフRESTサービスをホストするマシンの名前。これは、WC_Spaces
管理対象サーバーのマシン名です。
<name>port</name>
: アクティビティ・グラフRESTサービスをホストするマシンのポート番号。これは、WC_Spaces
管理対象サーバーのマシンのポート番号です。
<name>rewriteUrls</name>
: 「なし」
、「コンシューマ」
または「プロデューサ」
に設定できます。詳細は、RESTプロキシのページを参照してください。ドキュメント・リンクのCMISサーバーからのダイレクトURLが必要な場合、これを「なし」
に設定します。デフォルトはリライトなし(「なし」
)です。
<name>user</name>
: (オプション)アクティビティ・グラフRESTサービスとの接続時に使用するユーザー名。
<name>password</name>
: (オプション)アクティビティ・グラフRESTサービスとの接続時に使用するパスワード。username
と組み合せて、固定のユーザー名/パスワードへの接続を強制するために使用できます。パスワード・アクセスが保護されていないため、開発環境外で使用することはお薦めしません。
<name>restResourceIndex</name>
: RESTリソース索引のhost/portの後ろに追加するURI接尾辞(例: '/rest/api/resourceIndex')
<name>restResourceURL</name>
: restResourceURLは、アクティビティ・グラフRESTサービスのAPIリソースを定義する、REST URLのエンドポイントです。
<property> <name>restResourceURL</name> <value><a target="_blank" href="http://my.webcenter.host:8888/rest/api/resourceIndex">http://my.webcenter.host:8888/rest/api/resourceIndex</a></value> </property>
統合WLSドメイン以外(つまり、WC_Spaces
ドメイン内)で作業している場合、ピープル・コネクション・ロケータに基づくシナリオを使用するには、ローカル環境に応じた接続情報を構成する必要があります。
プロパティ・サービスでは、ピープル・コネクション・サービスとの接続にIPropertyLocator (ピープル・コネクションIPropertyLocator)が使用されます。ピープル・コネクション・サービスと接続するプロパティ・プロバイダは、このIPropertyLocatorを使用して特定のユーザー(または自身)に対するピープル・コネクションRESTコールを行い、そのRESTサービス・コールが表すPersonオブジェクトを返します。Personの各属性は、そのWebCenter Portalプロファイルの各値を表します。
ピープル・コネクションIPropertyLocatorの接続設定は、wc_domain
コンダクタ拡張ディレクトリにあるwcps-connections.xml
に保持されています(ドメインが有効範囲)。このファイルを直接編集することはお薦めできませんが、接続設定を変更するには、次のように複数の方法があります。第25.4.1項「プロバイダ接続設定の作成または変更」で説明している方法のいずれかを使用して、ピープル・コネクションIPropertyLocatorの接続設定を構成してください。
接続要素およびプロパティの説明
<connection-name>
: この接続の一意の名前。接続は名前によって取得できます。
<namespace>
: 一般的に、アクセスするシナリオがデプロイされるネームスペースに一致する必要があります。ネームスペースでは、特定のシナリオに対する適切な<connection>を検索する方法をコンダクタが決定します。ワイルドカードの「*」を使用すると、この接続要素をすべてのネームスペースで使用可能にできます。
<name>isDefault</name>
: この接続をデフォルトの接続としてマークします(複数が定義されている場合)。
<name>scheme</name>
: ピープル・コネクションRESTサービスにアクセスするプロトコル(HTTPまたはSSL用のHTTPS)。明示的に指定しない場合、デフォルトはHTTP
に設定されています。
<name>host</name>
: ピープル・コネクションRESTサービスをホストするマシンの名前。これは、WC_Spaces
管理対象サーバーのマシン名です。
<name>port</name>
: ピープル・コネクションRESTサービスをホストするマシンのポート番号。これは、WC_Spaces
管理対象サーバーのマシンのポート番号です。
<name>user</name>
: (オプション)ピープル・コネクションRESTサービスとの接続時に使用するユーザー名。固定のユーザー名への接続を強制するために使用できます。
<name>password</name>
: (オプション)ピープル・コネクションRESTサービスとの接続時に使用するパスワード。username
と組み合せて、固定のユーザー名/パスワードへの接続を強制するために使用できます。パスワード・アクセスが保護されていないため、開発環境外で使用することはお薦めしません。
<name>restResourceIndex</name>
: ピープル・コネクションRESTサービスのhost/portの後ろに追加され、resourceIndex
(使用可能なRESTサービス)ページの位置を指します(例: '/rest/api/resourceIndex
')。
プロパティ・プロバイダへのPersonクラスのブートストラップ
プロパティ・サービスがピープル・コネクションRESTコールの結果を認識して使用するためには、「Person」を認識する必要があります。つまり、「Person」をインスタンス化してそのプロパティを設定する前に、「Person」プロパティ・セット定義を作成するとともに、その個々の属性をプロパティ定義として設定する必要があります。
ピープル・コネクションIPropertyLocatorのコードでは、このプロセスを、次の例のようにweb.xml
ファイルで構成されているサーブレット・リスナーでブートストラップして実行してします。
<?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <!-- Allows connection config classes to be loaded from the connections.xml file --> <listener> <listener-class>oracle.wcps.connection.lifecycle.VersatileModuleLifecycleCallback</listener-class> </listener> <listener> <listener-class>oracle.wcps.people.util.BootstrapPropertiesListener</listener-class> </listener> </web-app>
ピープル・コネクションREST接続の構成情報へのアクセス
ピープル・コネクションIPropertyLocatorは実際の「プロバイダ」ではないため、アクティビティ・グラフなどのように、プロバイダ・コード内のその接続情報にはアクセスできません。そのかわりに、内部コードではVersatileModuleLifecycleCallback
を使用して、その構成情報を使用できるようにしています。したがって、これはweb.xml
で必ず構成する必要があるリスナーとなります。このリスナーがアクティブ化されたら、コードで接続情報にアクセスするコールを行い、IPropertyLocatorコードをパラメータ化してピープル・コネクションRESTサーバーを指すことができます。
PC IPropertyLocatorとプロパティ・サービス・プロバイダの接続
プロパティ・サービス・プロバイダ(PSP)は、ピープル・コネクションIPropertyLocatorをネームスペースによって認識します。前述のブートストラップ・プロセスでは、PropertySetDefinition
(とその定義)に「people.connections.person
」およびロケータ・クラス「oracle.wcps.people.property.PeoplePropertyLocator
」というネームスペースが指定されています。PSPの使用時に、namespace
とPropertySetDefinition
がPSPに渡されます。PSPは、PropertySetDefinition
で定義されているロケータ・クラスを使用してインスタンス化し、プロパティ値(ピープル・コネクションRESTサービスからのPersonの値)に委譲します。
このプロセスではロケータとネームスペースが非常に重要です。これらは、内部クラスPropertyDefConstantsで定数として定義されています。これらを構成する必要はありません。
アクティビティ・グラフの接続設定は、wc_domain
コンダクタ拡張ディレクトリにあるwcps-connections.xml
に保持されています(ドメインが有効範囲)。このファイルを直接編集することはお薦めできませんが、接続設定を変更するには、次のように複数の方法があります。第25.4.1項「プロバイダ接続設定の作成または変更」で説明している方法のいずれかを使用して、カスタム・プロバイダの接続設定を構成してください。構成ファイルの要素とプロパティの詳細は、第25.4.1.2項「接続構成の属性」を参照してください。
インストールでCoherenceを使用してキャッシュしている場合(「高可用性」環境の要件)、ネームスペース、プロパティ定義、プロパティ・セット定義およびプロパティ・セットに対して1つずつ、計4つのキャッシュを個別に設定する必要があります。
次のサンプルwcps-cache-config.xml
構成ファイルは、単純なCoherenceローカル・キャッシュの構成方法を示しています。より高度なキャッシュ・タイプについては、Coherenceのドキュメントを参照してください。Coherenceの各クラスは、パーソナライズと同じクラス・ローダーによってアクセスできる必要があります。Coherenceのwcps-cache-config.xml
ファイルも同じクラス・ローダーによってアクセスできる必要があります。詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスで、WebCenter PortalのJavaDocのoracle.wcps.cache.CacheFactory
クラスを参照してください。『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』のキャッシュ・メカニズムとしてのCoherenceの構成に関する項も参照してください。
<?xml version="1.0" encoding="UTF-8" ?> <cache-config> <caching-scheme-mapping> <cache-mapping> <cache-name>com.oracle.p13n.service.property.namespaces</cache-name> <scheme-name>ns-local-side</scheme-name> </cache-mapping> <cache-mapping> <cache-name>com.oracle.p13n.service.property.propertydefinitions_*</cache-name> <scheme-name>pd-local-side</scheme-name> </cache-mapping> <cache-mapping> <cache-name>com.oracle.p13n.service.property.propertysetdefinitions_*</cache-name> <scheme-name>psd-local-side</scheme-name> </cache-mapping> <cache-mapping> <cache-name>com.oracle.p13n.service.property.propertysets_*</cache-name> <scheme-name>ps-local-side</scheme-name> </cache-mapping> <cache-mapping> <cache-name>*</cache-name> <scheme-name>properties-default-local</scheme-name> </cache-mapping> </caching-scheme-mapping> <caching-schemes> <!-- The following schemes are all local. For a clustered deployment, a distributed, replcated, or other clustered scheme is recommended. See Coherence documentation for more information. --> <local-scheme> <scheme-name>ns-local-side</scheme-name> <service-name>NamespaceCache</service-name> <eviction-policy>HYBRID</eviction-policy> <high-units>{back-size-limit 0}</high-units> <unit-calculator>FIXED</unit-calculator> <expiry-delay>{back-expiry 1h}</expiry-delay> <flush-delay>1m</flush-delay> <cachestore-scheme/> </local-scheme> <local-scheme> <scheme-name>pd-local-side</scheme-name> <service-name>PropertyDefinitionCache</service-name> <eviction-policy>HYBRID</eviction-policy> <high-units>{back-size-limit 0}</high-units> <unit-calculator>FIXED</unit-calculator> <expiry-delay>{back-expiry 1h}</expiry-delay> <flush-delay>1m</flush-delay> <cachestore-scheme/> </local-scheme> <local-scheme> <scheme-name>psd-local-side</scheme-name> <service-name>PropertySetDefinitionCache</service-name> <eviction-policy>HYBRID</eviction-policy> <high-units>{back-size-limit 0}</high-units> <unit-calculator>FIXED</unit-calculator> <expiry-delay>{back-expiry 1h}</expiry-delay> <flush-delay>1m</flush-delay> <cachestore-scheme/> </local-scheme> <local-scheme> <scheme-name>ps-local-side</scheme-name> <service-name>PropertySetCache</service-name> <eviction-policy>HYBRID</eviction-policy> <high-units>{back-size-limit 0}</high-units> <unit-calculator>FIXED</unit-calculator> <expiry-delay>{back-expiry 1h}</expiry-delay> <flush-delay>1m</flush-delay> <cachestore-scheme/> </local-scheme> <local-scheme> <scheme-name>properties-default-local</scheme-name> <service-name>DefaultCache</service-name> <eviction-policy>HYBRID</eviction-policy> <high-units>{back-size-limit 0}</high-units> <unit-calculator>FIXED</unit-calculator> <expiry-delay>{back-expiry 1h}</expiry-delay> <flush-delay>1m</flush-delay> <cachestore-scheme/> </local-scheme> </caching-schemes> </cache-config>
コンテンツ・プレゼンタを使用してパーソナライズのシナリオを実行するには、まず接続ファイル(connections.xml
)を構成して、コンテンツ・プレゼンタがコンダクタ・サーバーおよびタグ付きシナリオを認識できるようにする必要があります。コンテンツ・プレゼンタの詳細は、『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』の「コンテンツ・プレゼンタを使用したコンテンツの公開」を参照してください。
connections.xml
には、WebCenter Portal側で使用するアプリケーションの接続情報が格納されています。コンテンツ・プレゼンタは、このファイルに登録されているURL接続の全リストを取得し、「Conductor
」で始まるURL接続を、コンダクタ・サーバーを指すURLとみなします。connections.xml
の詳細は、『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』の付録A「WebCenter Portalファイル」を参照してください。
コンテンツ・プレゼンタはWC_Spaces
サーバー上で実行しますが、パーソナライズのシナリオはWC_Utilities
サーバーで実行されるため、ドメイン間トラスト・サービスも構成する必要があります。詳細は、第25.3項「WebCenter OPSSトラスト・サービスの構成」を参照してください。
コンテンツ・プレゼンタ・タスク・フローの構成は、実行時に行うか、コンテンツ・プレゼンタ・タスク・フローをページに追加するときにJDeveloperから行うことができます。コンテンツ・プレゼンタのこの2種類の構成方法と、コンダクタ側の構成要件について、次の各項で説明します。
Portal Frameworkアプリケーションでは、JDeveloperを使用してURL接続を設定するか、第25.6.2項「コンテンツ・プレゼンタ・タスク・フローのパラメータの構成」の説明に従ってコンテンツ・プレゼンタ・タスク・フローのパラメータを設定します。 WebCenter Portalでは、WLSTコマンドまたはFusion Middleware Controlのいずれかを使用して接続を構成できます。
この項には次のサブセクションが含まれます:
WebCenter Portalでは、WLSTコマンドのadf_createHttpUrlConnection
を使用してURL接続を管理できます。次に例を示します。
adf_createHttpUrlConnection('webcenter','Conductor','http://example.com:8891/wcps/api/conductor?namespace=CP_namespace&
adf_createHttpUrlConnection
コマンドの詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のadf_createHttpUrlConnectionに関する項を参照してください。
WebCenter Portalでは、Fusion Middleware Controlを使用して接続を構成できます。
Fusion Middleware Controlを使用して接続を構成するには:
Fusion Middleware Controlにログインし、WebCenter Portalアプリケーションのホームページに移動します。
第6.2項「WebCenter Portalのホームページへの移動」を参照してください。
「WebCenterポータル」メニューから、「ADF」→「ADF接続の構成」を選択します。
「ADF接続構成」ページが表示されます(図25-1を参照)。
「接続タイプ」を「URL」
に設定し、「接続名」に「Conductor」
と入力して、「接続の作成」をクリックします。
「URL接続」セクションが表示されます(図25-2を参照)。
「編集」(鉛筆)アイコンをクリックします。
「URL接続」ダイアログが表示されます(図25-3を参照)。
URLを編集して、WebCenter Portalアプリケーションが使用するContent ServerインスタンスをURLが指すようにします。例:
http://example.com:8891/wcps/api/conductor?namespace=CP_namespace&repoId=myhost-ucm11g
必要に応じて、その他のフィールドをローカル接続に合せて更新し、「OK」をクリックします。
コンテンツ・プレゼンタのインスタンスは、そのタスク・フロー・パラメータによって構成できます。これらのパラメータは、実行時に「コンテンツ・プレゼンタ構成」ダイアログで設定するか、コンテンツ・プレゼンタ・タスク・フローの追加時にJDeveloperから設定できます。これを手動で行うには、2つのパラメータを設定する必要があります。Data Source Type
パラメータをdsTypeScenarioResults
に設定し、Data Source
パラメータを次のように設定してください。
conductor-connection-name=ConductorConnectionName,namespace=
ScenarioNamespace,scenario-name=ScenarioName,inputparam1=value1,inputparam2=value2
conductor-connection-name
の値は、有効なコンダクタ・サーバーを指すURL接続と一致する必要があります。また、使用するネームスペースには、指定のシナリオが属しているネームスペースの名前を指定してください。最後に、シナリオで要求される任意の入力パラメータを追加できます。それには、前述のように名前/値ペアをカンマで区切って指定します。
パーソナライズ用のコンテンツ・プレゼンタの構成の詳細は、次を参照してください。
実行時: 『Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築』のコンテンツ・プレゼンタ・タスク・フローのプロパティ設定に関する項。
JDeveloper: 『Oracle Fusion Middleware Oracle WebCenter PortalおよびOracle Jdeveloperでのポータルの開発』のコンテンツ・プレゼンタ・タスク・フロー・パラメータおよび初期設定の表示テンプレートに関する項。
コンダクタ側では、シナリオをコンテンツ・プレゼンタに認識させるための適切なタグがシナリオに必要です。コンテンツ・プレゼンタでは、ContentPresenterScenario
というタグを使用します。したがって、コンテンツ・プレゼンタに認識させる必要があるシナリオはすべて、このタグの関連付けが必要です。
コンダクタ側とWebCenter Portalアプリケーション側の両方ですべての設定が完了したら、後は簡単です。「コンテンツ・プレゼンタ構成」ダイアログを開くと、「コンテンツ・ソース」選択リストに「シナリオ結果」が表示されます。これを選択すると、コンテンツ・プレゼンタを使用するようにタグ付けされているすべてのシナリオが表に表示されます。最初のシナリオが必ず選択されており、そのシナリオに入力パラメータが定義されている場合は、入力パラメータが表の下に入力フィールドとともに表示されます。
表で別のシナリオを選択すると、下の入力パラメータが更新されます。シナリオを選択して入力パラメータを指定したら、コンテンツ・プレゼンタをプレビューまたは保存して結果を取得できます。結果は、他の複数値コンテンツ・ソースと同様に表示されます。最終的には、表示用に選択したテンプレートに基づいて表示されます。
注意: シナリオから返され、コンテンツ・プレゼンタ内で使用される結果は、有効なCMIS問合せであることが必要です。コンテンツ・プレゼンタは戻り値を取得し、それを(CMIS問合せとして)コンダクタURL内で指定されているリポジトリに対して実行するからです。 |
シングル・サインオンの構成は、configureTrustWCPS.py
スクリプトとconfigureConnectionsWCPS.py
スクリプトを実行してOracle WebCenter Portalドメインを構成する一環として行われるか、またはconfigureWCPS.py
スクリプトを実行してJDeveloperの統合WLSドメインを構成する一環として行われます。これらのスクリプトを実行すると、トラスト・サービス・シングル・サインオンも設定されます。これにより、クライアントJEE Webアプリケーション、パーソナライズWebアプリケーション、およびデフォルトのデータ・プロバイダで使用されるWC_Spaces
WebアプリケーションRESTサービスの間でREST HTTPリクエストのシングル・サインオンが可能になります。これらのアプリケーションはすべて、OAM/OSSOが提供するシングル・サインオン・トークンもサポートするように構成されます。追加のパーソナライズ固有の構成は必要ありません。詳細は、第25.3.3項「ドメイン間トラストの構成」を参照してください。
デフォルトでは、パーソナライズRESTリソース(resourceIndexを除く)へのすべてのアクセスには認証が要求されます。ほとんどの場合、開発用にはこれで十分です。ただし、本番環境では、このデフォルトのセキュリティ制約を変更する場合があります。次の各項では、匿名アクセスが必要なシナリオを実行する際のセキュリティを下げる方法や、新しいシナリオを作成できないようにセキュリティを強化する方法について説明します。
この項には次のサブセクションが含まれます:
次のセキュリティ制約をドメインのconductor-extensions-library\WEB-INF\web.xml
ファイルに追加すると、デフォルトの記述子の(認証を要求する)セキュリティを遵守しながら、匿名のアプリケーションまたはネームスペースから作成またはデプロイされたシナリオに対する匿名GET/POSTが許可されます。
<security-constraint> <web-resource-collection> <web-resource-name>ConductorJerseyWebApplication</web-resource-name> <url-pattern>/api/conductor/namespaces/anonymous/scenarios/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <!-- Allow anonymous user access in this namespace --> <!--auth-constraint> <role-name>Users</role-name> </auth-constraint--> </security-constraint>
簡単なフィルタをドメインのconductor-extensions-library\WEB-INF\web.xml
に追加することで、匿名ユーザーに対してシナリオの作成を禁止できます。フィルタの例(AnonymousScenarioFilter)を次に示します。
<filter> <filter-name>AnonymousScenarioFilter</filter-name> <filter-class>oracle.wcps.samples.AnonymousScenarioFilter</filter-class> </filter> <filter-mapping> <filter-name>AnonymousScenarioFilter</filter-name> <url-pattern>/api/conductor/namespaces/PublicPersonalization/scenarios</url-pattern> </filter-mapping> <security-constraint> <web-resource-collection> <web-resource-name>ConductorJerseyWebApplication</web-resource-name> <url-pattern>/api/conductor/namespaces/PublicPersonalization/scenarios/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <!-- Commented out to allow anonymous user access in this namespace <auth-constraint> <role-name>Users</role-name> </auth-constraint> --> </security-constraint>
このフィルタは、匿名ユーザーでないかどうか(httpRequest.getUserPrincipal() == null
)、およびシナリオを作成するRESTリソースのURL (/api/conductor/namespaces/PublicPersonalization/scenarios
)に対するHTTP POST
操作でないかどうかを明示的にチェックします。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request instanceof HttpServletRequest) { HttpServletRequest httpRequest = (HttpServletRequest)request; String method = httpRequest.getMethod(); if ("POST".equalsIgnoreCase(method) && httpRequest.getUserPrincipal() == null) { throw new ServletException("Anonymous users cannot create scenarios."); } } chain.doFilter(request, response); }
第25.8.2項「匿名ユーザーによるシナリオの作成の禁止」で説明したフィルタに簡単な変更を加えると(httpRequest.getUserPrincipal() check
のチェックを削除)、すべてのユーザーに対してシナリオの作成を禁止できます。HTTP POST操作はシナリオの実行のリクエストにも使用されますが、その場合のURIは異なります(また、フィルタ<url-pattern>
ではなく、<security-constraint>
内で保護されています)。