uCosminexus Portal Framework ポートレット開発ガイド
- <この項の構成>
- (1) HTTPエミュレーション
- (2) 認証
- (3) URL変換
- (4) キャッシュ制御
- (5) 要素フィルタリング
- (6) コンテンツフィルタリング
- (7) 外部サーバとのセッション維持
- (8) その他の注意事項
(1) HTTPエミュレーション
Multi Web Portletは,HTTPでHTMLコンテンツを取得して,ポートレットとしてポータルに統合します。Multi Web PortletはHTTP1.1のサブセットに対応します。HTTPレスポンスコードの取り扱いを次の表に示します。
表5-2 レスポンスコードの取り扱い(Multi Web Portlet)
レスポンスコード 内容 1xx:Informational 結果フレーズをポートレットおよびログに出力します。 2xx:Successful 200(正常終了)に対応します。201から206は結果フレーズをポートレットおよびログに出力します。 3xx:Redirection 301,302,303,307(リダイレクト)に対応します。300,304,305,およびGET,またはHEAD以外のリクエストによって301,または307が返ってきた場合は,結果フレーズをポートレットおよびログに出力します。※ 4xx:Client Error 401(Unauthorized)および407(Proxy Authentication Required)に対応します。
401および407以外は,結果フレーズをポートレットおよびログに出力します。5xx:Server Error 結果フレーズをポートレットおよびログに出力します。 注※ Multi Web Portletでは,301または302が返ってきた場合,レスポンスコードへの対応は使用するWebブラウザによって異なります。
対応するレスポンスヘッダフィールドの取り扱いを次の表に示します。
表5-3 レスポンスヘッダフィールドの取り扱い(Multi Web Portlet)
ヘッダフィールド 内容 Cache-Control キャッシュ制御に使用します。キャッシュ制御の指定は,Portal ManagerのWebポートレット設定時に定義できます。詳細は,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。 Content-Type コンテンツのエンコーディング判定に使用します。text/htmlだけに対応します。 Last-Modified コンテンツの最終更新時刻です。キャッシュ制御に使用します。 Location リダイレクト先のURLです。リダイレクト時に使用します。 Set-Cookie 指定されたCookie値をサーバ内で保持します。 Set-Cookie2 指定されたCookie値をサーバ内で保持します。 WWW-Authenticate ベーシック認証を試みます。 Proxy-Authenticate プロキシ認証を試みます。 クライアントからのリクエストヘッダフィールドの取り扱いを次の表に示します。
表5-4 リクエストヘッダフィールドの取り扱い(Multi Web Portlet)
ヘッダフィールド 内容 Host リクエスト先のホスト名を設定します。 Accept 対応するMIMEタイプを設定します。 Accept-Encoding 対応するエンコーディングを設定します。 Accept-Language 対応する言語を設定します。 User-Agent リクエストしたUser-Agentを設定します。 If-Modified-Since コンテンツの最終更新時刻を設定します。 Cookie Set-Cookie1でサーバに保存されたCookieを設定します。 Cookie2 Set-Cookie2でサーバに保存されたCookieを設定します。 Authorization ベーシック認証に必要な認証情報を設定します。 Proxy-Authorization プロキシ認証に必要な認証情報を設定します。 HTMLコンテンツに日本語を記述する場合には,通常のHTMLコンテンツ同様,エンコーディング方法を指定する必要があります。エンコーディング方法の決定は,外部のWebサイトに格納されたHTMLコンテンツとuCosminexus Portal Framework内に配置したHTMLコンテンツで異なります。
uCosminexus Portal Frameworkでは,ユーザの環境による文字化けを防ぐために,ユーザの環境ごとにエンコーディング方法を推奨しています。uCosminexus Portal Frameworkが推奨するエンコーディングについては,「2.1.4 エンコーディング」を参照してください。
●外部Webサーバ上のHTMLコンテンツのエンコーディング指定
エンコーディング方法は,次の優先順位で決定されます。
- HTTPレスポンスヘッダのContent-Typeフィールドのcharsetパラメタ
- META要素中のContent-Type指定のcharsetパラメタ
- 自動判定
自動判定では,正しいエンコーディング方法を決定できないことがあるので,1.,または2.でのエンコーディング指定を推奨します。
プロキシを経由してコンテンツを取得できます。プロキシと連携するには,Portal ManagerのWebポートレット設定時に定義できます。詳細は,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
Multi Web Portletは,リダイレクト回数設定はできません。
PCからポータルにアクセスしている場合,ディレクトリサーバに格納されているユーザ情報(パーソナライズ情報)から認証情報を取得すれば,Webアプリケーションとのシームレスな連携ができます。
認証機能が利用できる前提条件を次に示します。
- ポートレットに表示しているアプリケーションへの,ログイン前のページの認証
認証先が参照のチェックをするアプリケーションの場合
- JavaScriptを使用しているWebサイトの認証
JavaScriptで認証フィールドを動的に変更および生成している場合
Webサーバのレスポンスコードが401(Unauthorized)の際,次の処理をします。
- ユーザログイン時
対象URLに対応するユーザID,およびパスワードをリポジトリから取得して自動的に認証します。この機能は,ユーザがユーザIDとパスワードを登録すれば使用できるようになります。登録されていない場合は,ユーザIDとパスワードを登録するフォームを出力します。なお,管理者があらかじめユーザIDとパスワードを登録することはできません。
- ウェルカム画面(ユーザがログインしていない場合)
ウェルカム画面でのWebサーバに対応する認証はしません。
プロキシサーバのレスポンスコードが407(Proxy Authentication Required)の際,次の処理をします。
- ユーザログイン時
ユーザがログインすると,ユーザ情報取得Beanを使用して,リポジトリから対象となるプロキシサーバに対応するユーザIDおよびパスワードを取得して,自動的に認証します。該当するユーザID,およびパスワードが登録されていない場合は,ユーザが入力できるようにフォームを出力します。なお,管理者があらかじめユーザIDとパスワードを登録することはできません。
- ウェルカム画面(ユーザがログインしていない場合)
ウェルカム画面でのプロキシサーバに対応する認証はしません。
Webサーバへのリクエスト情報を基にシングルサインオンを実現します。Multi Web Portletの場合,認証するサイトによって,認証画面を通過する必要があるとき,シングルサインオンはできません。パスワードの入力ミスなどによってフォーム認証に失敗した場合は,認証情報をクリアして,再度認証情報を入力する必要があります。
Multi Web Portletの場合は,ポートレットの編集ボタンをクリックし,「フォームベース認証のクリア」を実行して,再度認証情報を入力してください。
フォーム認証をするためには,次に示す項目をあらかじめ設定しておくことが必要です。
- 認証するページのURL
- ログインするページのURL
- 認証時に使用するメソッド
- 認証情報を示すフィールド
なお,管理者があらかじめユーザIDとパスワードを登録することはできません。
Multi Web Portletは,Portal Managerでフォーム認証情報を設定します。Multi Web Portletの場合のフォーム認証を設定する方法については,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
Multi Web Portletでは,ポータル画面内で画面遷移するために,Webページに含まれている相対パス形式および絶対パス形式のURLを,uCosminexus Portal Frameworkを経由するURLに変換します。BASE要素で基準となるURLが指定されている場合,BASE要素を基に自動的に変換します。
HTMLコンテンツ中に含まれる画像などのバイナリデータを,uCosminexus Portal Frameworkを経由して取得するか,またはWebブラウザが直接Webサーバから取得するかをPortal Managerでポートレットを登録するときに選択できます。この設定方法については,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
Multi Web Portletでは,uCosminexus Portal Framework内にHTML,CHTML,およびHDMLコンテンツをキャッシングしません。ただし,クライアントと転送先のWebサーバ間では,日付情報の有効期限を基に,クライアントに蓄積されたキャッシュを使用できます。
要素フィルタリングは,Multi Web Portletの登録時に,フィルタリングするかしないかを設定できます。タグ,要素は取り除かれますが,コンテンツを表示するために必要なBASE要素やエンコーディング設定,およびキャッシュ制御に必要なMETA要素の一部はコンテンツ作成のために参照されます。
Multi Web Portletは,BODY本体内に記述できない開始,終了タグや要素を取り除きません。
Multi Web PortletのフィルタリングはPortal Managerの[ポートレットの設定]画面で設定します。フィルタリングの設定方法については,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
要素フィルタリングで取り除かれるタグ,要素を次に示します。
- APPLET要素
- OBJECT要素
- SCRIPT要素
なお,SCRIPT要素を設定すると,onで始まるイベント属性も設定されます。
コンテンツフィルタリングとは,HTMLファイルをMulti Web Portletとして取り込む際に,コンテンツを抽出,または削除することです。コンテンツフィルタリングを使用すると,HTMLファイルの一部分をポートレットに取り込めます。コンテンツフィルタリングは,Webポートレットの登録時に設定できます。コンテンツフィルタリングの設定方法については,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「Webポートレットの設定」の説明を参照してください。
コンテンツフィルタリングでは,コンテンツのBODY要素本体に含まれるディレクティブに従ってコンテンツを抽出,または削除します。ディレクティブも同時に抽出・削除します。
ディレクティブは,コメントまたは正規表現で指定できます。
なお,コンテンツフィルタリングの設定を次に示します。
表5-5 コンテンツフィルタリングの設定(Multi Web Portlet)
フィルタリング方式 正規表現 コメント 削除 ○ × 抽出 × ×
- (凡例)
- ○:設定できます。
- ×:設定できません。
- 正規表現でのディレクティブ指定
- HTMLファイルの文字列をパターンとして指定します。パターンはWebポートレットごとに指定できます。
- パターンを指定できる範囲を次に示します。
- 先頭からパターンまで
- パターンからパターンまで
- パターンから終了まで
- 指定するパターンは大文字小文字を区別します。また,パターンには「,」および「|」は指定できません。HTMLファイルの文字列が,正規表現と合致しない場合,コンテンツフィルタリングをしません。
- パターンからパターンまでの範囲は,複数指定できます。複数のフィルタリング範囲を指定する場合,フィルタリング範囲が重複しないようにパターンを指定してください。パターンからパターンまでの範囲では,パターン1およびパターン2を指定します。パターン2には,パターン1よりファイル内で後ろに記述されている文字列を指定します。
- 正規表現でのコンテンツフィルタリングの使用例
- 正規表現で削除するときの例を次に示します。
- 特定個所のタグを消去する
- 特定のタグを一括して消去する
- コメント間を削除する
Multi Web Portletでは,外部Webサーバとのセッションを維持できます。セッション維持の方法を次に示します。
- Cookieによるセッション維持
- URLRewritingによるセッション維持
外部WebサーバからのレスポンスからCookieを取得します。WebブラウザにはCookieを渡さないで,ポータルで保持します。ユーザがポータルにログインしており,かつ有効期限が永続的なCookieは,セッションが終了するとディレクトリサーバに保存されます。Cookieによるセッション維持を次の図に示します。
図5-2 Cookieによるセッション維持(Multi Web Portlet)
URLを読み込んだあとにURLを書き換えて,セッションを維持します。
(8) その他の注意事項
Multi Web Portletではスタイルシートはページコンテンツ内のスタイルを使用します。
Multi Web Portletでは,FRAMESETを使用したHTMLコンテンツを表示できます。
スクリプトを使用するには,Webポートレットの登録の際に次の設定をしてください。
- スクリプトの関数やグローバル変数の定義は異なる名称を指定します。
- SCRIPT要素およびonで始まるイベント属性の削除オプションを[削除しない]にします。
デフォルトでは,SCRIPT要素およびonで始まるイベント属性は削除されます。
HTML中に組み込まれるオブジェクトとMulti Web Portletは連携できません。
Multi Web Portletでは,HTMLコンテンツの場合,画面の表示先を指定するTARGETに「_PARENT」を指定しないでください。TARGETには「_TOP」,またはフレーム名を指定してください。なお,Multi Web Portletの画面内で「_PARENT」を使用した場合,ポータル画面が遷移することがあります。
Multi Web Portletの場合,次の条件のときは最大表示画面に切り替わりません。なお,最大化表示は,SCRIPTを使用している場合は設定しないでください。
- 認証画面表示直後
通常表示画面状態で,認証画面が表示された直後は最大画面には切り替わりません。
- Frame内のリンク要素
Frame内のリンク要素をクリックした場合は,最大画面に切り替わりません。
- ScriptによるTarget要素の書き換え
SCRIPTによって,LINK要素のTARGETが書き換えられている場合,最大画面に切り替わりません。また,TARGET要素の書き換えによっては,ポートレットにコンテンツが正しく表示されなくなります。
- レスポンスコードが302の場合
レスポンスコードに302が返された場合,最大画面に切り替わりません。
Multi Web Portletでは,ポータル内のWebコンテンツ(HTML,CHTML,およびHDML)に対して次の処理をしません。
- コンテンツ内のURL変換
- 画面遷移時の自動最大化表示
使用するプロキシサーバの種類によっては,ソケットレベルでの通信障害が発生することがあります。ソケットレベルでの通信障害が発生した場合,ポートレット定義ファイルのMulti Web Portletのポートレット定義に"hptl.MultiWebPortlet.ClientCacheSwitch"パラメタを追加して,valueに"NO"を指定してください。この設定によって,クライアントに蓄積されたキャッシュが使用できなくなり,通信障害を取り除けます。
なお,Portal Managerで設定を変更すると,ポートレット定義ファイルが上書きされるため,追加した"hptl.MultiWebPortlet.ClientCacheSwitch"パラメタは無効になります。Portal Managerで設定を変更した場合,再度,"hptl.MultiWebPortlet.ClientCacheSwitch"パラメタを追加してください。ポートレット定義ファイルについては,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「ポートレット定義ファイル(jetspeed-config.jcfg)」の説明を参照してください。
ポートレット定義ファイル(jetspeed-config.jcfg)の格納場所を次に示します。
{PROJECT_HOME}\WEB-INF\confポートレット定義ファイルに追加した場合の例,および特定のポートレットにだけ追加した場合の例を次に示します。
- ポートレット定義ファイルに追加した場合の例(下線部分を追加)
<portlet-entry type="abstract" name="MultiWeb"> <classname>jp.co.hitachi.soft.portal.portal.portlets.MultiWebPortlet</classname> <parameter value="NO" name="hptl.MultiWebPortlet.ClientCacheSwitch"/> <parameter value="localhost" name="hptl.ProxyHost"/> <parameter value="8080" name="hptl.ProxyPort"/> </portlet-entry>
- 特定のポートレットにだけ追加した場合の例(下線部分を追加)
<portlet-entry application="false" admin="false" parent="MultiWeb" hidden="false" type="ref" name="Hitachi"> <url>/portlets/hitachi.xml</url> <parameter value="NO" name="hptl.MultiWebPortlet.ClientCacheSwitch"/> <parameter value="true" name="hptl.MaximizeMode"/> <parameter value="false" name="hptl.MinimizeMode"/> <parameter value="false" name="hptl.CloseMode"/> <parameter value="localhost" name="hptl.ProxyHost"/> <parameter value="8080" name="hptl.ProxyPort"/> <parameter value="YES" name="hptl.MultiWebPortlet.AppletRemove"/> <parameter value="YES" name="hptl.MultiWebPortlet.ObjectRemove"/> <parameter value="YES" name="hptl.MultiWebPortlet.ScriptRemove"/> <parameter value="Portal" name="hptl.MultiWebPortlet.BinaryDataFetching"/> <parameter value="FALSE" name="hptl.MultiWebPortlet.AutoMaxChange"/> <meta-info> <title>日立製作所</title> <description>日立製作所 ホームページ</description> </meta-info> </portlet-entry>
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.