AEM ポータルとポートレット

最終更新日: 2023-12-01
  • 作成対象:
  • Admin

このドキュメントは次の内容について説明します。

  • AEM Portal のアーキテクチャ
  • AEM as a portal の管理と設定
  • AEMをポータルとして使用する
  • ポートレット(例えば、web サーバーなど)内の AEM コンテンツのインストール、設定、表示

AEM Portal のアーキテクチャ

AEM portal アーキテクチャには、ポータルとポートレットの定義が含まれます。

ポータルとは

ポータルとは、パーソナライゼーション、シングルサインオン、様々なソースからのコンテンツ統合を提供し、情報システムのプレゼンテーションレイヤーをホストする Web アプリケーションです。

AEM では JSR 286 準拠のポートレットを実行できます。ポートレットコンポーネントによって、ページにポートレットを埋め込むことができます。AEM コンテンツポートレットの管理を参照してください。

ポートレットとは

ポートレットとは、動的コンテンツを生成するコンテナ内にデプロイされる Web コンポーネントです。 ポートレットインターフェイスはパッケージ化され、ポートレットコンテナ内の.war ファイルとしてデプロイされます。 AEMをポータルとして実行している場合は、ポートレットの.war ファイルを使用してポートレットを実行する必要があります。

ポータルに表示されるAEMコンテンツを設定するには、 ポートレットでのAEMのインストール、設定、使用.

AEM Portal Director

注意

AEM Portal Directorは、AEM 6.4 で非推奨(廃止予定)となりました。詳しくは、 廃止および削除された機能.

AEM Content Portlet の管理

AEMコンテンツポートレットを使用すると、ポータルにAEMコンテンツを表示できます。 このポートレットは /crx-quickstart/opt/portal にあり、様々な方法でカスタマイズできます。例えば、AEMがデフォルトの動作を上書きするために必要な認証情報を生成する独自の認証サービスをデプロイすることで、SSO/認証処理をカスタマイズできます。 プラグインは、定義された API を使用し、API に対してプラグインを作成することで、独自の機能を追加できます。 プラグインは、実行中のポートレットにデプロイできます。 適切に機能させるには、起動時に表示するコンテンツパスと共に、AEMオーサーインスタンスとパブリッシュインスタンスの設定が必要です。

一部の設定はポートレット環境設定によって変更できますが、その他の設定の変更は OSGi サービス設定で行います。設定の変更には、config ファイルまたは OSGi Web コンソールを使用します。

ポートレット環境設定

ポータルの環境設定は、ポータルサーバーでのデプロイ時に設定するか、 WEB-INF/portlet.xml ファイルを作成してから、ポートレット Web アプリケーションをデプロイします。 デフォルトでは portlet.xml ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="https://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="https://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd"
             version="1.0">
   <portlet>
      <portlet-name>RSSWeatherPortlet</portlet-name>
      <portlet-class>org.jboss.portlet.weather.WeatherPortlet</portlet-class>
      <init-param>
         <name>default_zipcode</name>
         <value>05673</value>
      </init-param>
      <init-param>
         <name>RSS_XSL</name>
         <value>/WEB-INF/Rss.xsl</value>
      </init-param>
      <init-param>
         <name>base_url</name>
         <value>https://xml.weather.yahoo.com/forecastrss?p=</value>
      </init-param>
      <expiration-cache>180</expiration-cache>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>VIEW</portlet-mode>
         <portlet-mode>EDIT</portlet-mode>
      </supports>
      <portlet-info>
         <title>Weather Portlet</title>
      </portlet-info>
      <portlet-preferences>
         <preference>
            <name>expires</name>
            <value>180</value>
         </preference>
         <preference>
            <name>RssXml</name>
            <value>https://xml.weather.yahoo.com/forecastrss?p=33145</value>
            <read-only>false</read-only>
         </preference>
      </portlet-preferences>
   </portlet>
</portlet-app>

ポートレットは、次の環境設定を使用して設定できます。

startPath

これはポートレットの開始パスで、最初に表示されるコンテンツを定義します。

重要:ポートレットが、とは異なるコンテキストパスで実行されているAEMオーサーインスタンスおよびパブリッシュインスタンスに接続するように設定されている場合 /、強制を有効にする必要があります CQUrlInfo これらのAEMインスタンスの Html Library Manager 設定(例えば、Felix Webconsole を使用)では、編集が機能せず、環境設定ダイアログは表示されません。

htmlSelector 各 URL に追加されるセレクター。 デフォルトでは portlet であり、HTML ページへのすべてのリクエストが、.portlet.html で終わる URL を使用します。 これにより、AEM内でカスタムスクリプトを使用してポートレットのレンダリングを行うことができます。
addCssToPortalHeader

デフォルトでは、AEMのHTMLページに含まれる CSS ファイルがポートレットに含まれます。 このオプションを無効にすると、デフォルトの CSS ファイルは除外されます。

このオプションを有効にすると、ポータルの動作に応じて、CSS ファイルが html ページの先頭に追加されるか、html ページに埋め込まれます。

includeToolbar デフォルトでは、管理機能用のツールバーがコンテンツポートレット内にレンダリングされます。 このオプションを無効にすると、ツールバーはレンダリングされません。
urlParameterNames

ポートレットに対して表示する新しいコンテンツ URL を含む可能性のある代替 URL パラメーター名のリスト。 リストは上から下へと処理され、値を含む最初のパラメーターが使用されます。 URL が見つからない場合は、デフォルトの URL パラメーターが使用されます。 指定された URL は、そのまま使用され、それ以上変更はありません。

この設定は、デプロイ済みのポートレットごとにおこなわれます。また、「Day Portal Director Portlet Bridge」の OSGi 設定で、一部の URL パラメーターをグローバルに設定することもできます。

preferenceDialog AEMの環境設定ダイアログへのパス。空のままにした場合は、組み込みの環境設定ダイアログが使用されます。 デフォルト値は/libs/portal/content/prefs.htmlです。
initialRedirect デフォルトでは、ポートレットは最初の呼び出し時にポータルページ全体の JavaScript リダイレクトを実行します。 これは、最新のポータルサーバーのドラッグ&ドロップシナリオをサポートするためです。 実稼動環境では、このリダイレクトはほとんど必要とされないので、この環境設定をに設定してオフにすることができます。 false.

OSGi Web コンソール

ポータルサーバーがホスト localhost、ポート 8080 で実行され、AEM ポートレット Web アプリケーションが Web アプリケーションコンテキスト cqportlet にマウントされていると想定すると、Web コンソールの URL は https://localhost:8080/cqportlet/cqbridge/system/console になります。デフォルトのユーザーとパスワードはです。 admin.

を開きます。 設定 「 」タブで「 」を選択します。 Portal Directory CQ Server Configuration. ここでオーサーインスタンスおよびパブリッシュインスタンスのベース URL を指定します。この手順については、ポートレットの設定で説明します。

メモ

OSGi Web コンソールは、開発(またはテスト)中に設定を変更する目的でのみ使用します。 実稼動システムのコンソールへのリクエストを必ずブロックしてください。

設定の指定

自動デプロイメントと設定プロビジョニングをサポートするために、AEMコンテンツポートレットには組み込みの設定サポートがあり、ポートレットアプリケーションに提供されるクラスパスから設定を読み込もうとします。

起動時に、システムプロパティ com.day.cq.portet.config は、現在の環境を検出するために読み取られます。 通常、このプロパティの値は dev, prod, テスト​など。 環境が設定されていない場合、設定は読み取られません。

環境を設定している場合、クラスパス com/day/cq/portlet/{env}.config で config ファイルが検索されます(env はその環境の実際の値に置き換えられます)。このファイルには、この環境のすべての設定ファイルが一覧表示されます。 これらのファイルは、設定ファイルの場所を基準に検索されます。 例えば、ファイルに my.service.xml, 行が含まれている場合、 このファイルは、クラスパス com/day/cq/portlet/my.service.config. から読み取られます。ファイルの名前は、サービスの永続性 ID に .config を付けたものになります。 先ほどの例では、永続性 ID は my.service です。設定ファイルの形式は、Apache Sling OSGi インストーラーによって使用されている形式と同じです。

つまり、各環境に対して、対応する設定ファイルを追加する必要があります。 すべての環境に適用する設定は、これらのすべてのファイルに入力する必要があります。単一の環境の場合は、そのファイルに入力するだけです。 このメカニズムにより、どの環境でどの設定が読み取られるかを完全に制御できます。

異なるシステムプロパティを使用して環境を検出できます。 システムプロパティを指定します。 com.day.cq.portet.configproperty の代わりに使用するシステムプロパティの名前を含む com.day.cq.portet.config.

キャッシュとキャッシュの無効化

ポートレットは、デフォルト設定で、AEM WCM から受け取った応答をユーザー固有のキャッシュにキャッシュします。 パブリッシュインスタンスのコンテンツで変更が発生した場合、キャッシュを無効にする必要があります。 この目的で、AEM WCM では、オーサーインスタンス上にレプリケーションエージェントを設定する必要があります。 キャッシュは手動でフラッシュすることもできます。 この項では、これらの両方の手順について説明します。

ポートレットには独自のキャッシュを設定できるので、AEMへのアクセス権を必要とせずに、ポートレット内のコンテンツを表示できます。 ポータルは、/libs/portal/director 内のコンテンツとして使用できます。 コンテンツにアクセスするには、AEM インスタンスを起動して、CRXDE Lite または WebDav を使用してその場所からファイルをダウンロードします。

このバンドルは実行時にデプロイするか、デプロイ前にポートレット Web アプリケーションの WEB-INF/lib/resources/bundles に追加します。

キャッシュがデプロイされた後は、ポートレットによってパブリッシュインスタンスからコンテンツがキャッシュされます。ポートレットのキャッシュは、AEMから Dispatcher をフラッシュして無効化できます。 ポートレットが独自のキャッシュを使用するように設定するには、次の手順を実行します。

  1. ポータルサーバーをターゲットにするオーサー環境でレプリケーションエージェントを設定します。
  2. ポータルサーバーがホスト localhost、ポート 8080 で実行され、AEM ポートレット Web アプリケーションがコンテキスト cqportlet にマウントされていると想定すると、キャッシュをフラッシュするための URL は https://localhost:8080/cqportlet/cqbridge/cqpcache?Path=$(path) になります。GET メソッドを使用してください。
    注意:​要求パラメーターを使用する代わりに、Path という名前の http ヘッダーを送信できます。

レプリケーションエージェントによるキャッシュのフラッシュ

通常の Dispatcher の無効化と同様に、レプリケーションエージェントを設定して、ポータルのAEMポートレットキャッシュをターゲットに設定できます。 レプリケーションエージェントを設定した後、通常のページアクティベーションのたびにポータルのキャッシュがフラッシュされます。

AEMポートレットを実行する複数のポータルノードを操作する場合は、この手順で説明するように、各ノードにエージェントを作成する必要があります。

ポータルのレプリケーションエージェントを設定するには、次の手順に従います。

  1. オーサーインスタンスにログインします。

  2. 「Web サイト」タブで、「ツール」タブをクリックします。

  3. レプリケーションエージェントの​新規​メニューで、「新しいページ」をクリックします。

    screen_shot_2012-02-15at40647pm

  4. テンプレート」で、「レプリケーションエージェント」を選択し、エージェントの名前を入力します。「作成」をクリックします。

    screen_shot_2012-02-15at40817pm

  5. 作成したレプリケーションエージェントをダブルクリックします。 まだ設定されていないので、無効と表示されます。

    screen_shot_2012-02-15at41001pm

  6. 編集」をクリックします。

  7. 設定」タブで、「有効」チェックボックスを選択し、シリアル化の種類として「Dispatcher Flush」を選択し、再試行のタイムアウト値(例:60000)を入力します。

    screen_shot_2012-02-15at42101pm

  8. トランスポート」タブをクリックします。

  9. URI」フィールドに、ポートレットのフラッシュ URI(URL)を入力します。URL は次の形式です。

    https://<wps-host>:<port>/<wps-context>/<cq5-portlet-context>/cqbridge/cqpcache
    

    screen_shot_2012-02-15at42322pm

  10. 拡張」タブをクリックします。

    screen_shot_2012-02-15at42515pm

  11. HTTP メソッド」フィールドに 「GET」 と入力します。

  12. HTTP ヘッダー」フィールドで + をクリックし、新しいエントリおよびタイプとして Path: {path} を追加します。

  13. 必要に応じて、「プロキシ」タブをクリックし、エージェントのプロキシ情報を入力します。

  14. OK」をクリックして、変更を保存します。

  15. 接続をテストするには、「接続をテスト」リンクをクリックします。レプリケーションテストが成功したかどうかを示すログメッセージが表示されます。 次に例を示します。

    screen_shot_2012-02-15at42639pm

ポートレットのキャッシュの手動フラッシュ

レプリケーションエージェント用に設定されたのと同じ URL にアクセスして、ポートレットのキャッシュを手動でフラッシュできます。 詳しくは、 キャッシュのフラッシュ を URL の形式に設定します。 また、フラッシュ対象を示すには、URL パラメーターの Path=<path> を使用してこの URL を拡張する必要があります。

次に例を示します。

https://10.0.20.99:10040/wps/PA_CQ5_Portlet/cqbridge/cqpcache?Path=* キャッシュ全体をフラッシュします。 キャッシュからhttps://10.0.20.99:10040/wps/PA_CQ5_Portlet/cqbridge/cqpcache?Path=/content/mypage/xyz/content/mypage/xyzをフラッシュします。

ポータルセキュリティ

ポータルは、駆動認証メカニズムです。 技術ユーザー、ポータルユーザー、グループなどを使用してAEMにログインできます。 ポートレットにはポータル内のユーザーのパスワードへのアクセス権がないので、ポートレットがユーザーに正常にログインするためのすべての資格情報を知らない場合は、SSO ソリューションを使用する必要があります。 この場合、AEMポートレットは必要な情報をすべてAEMに転送し、次にこの情報を基になるAEMリポジトリに転送します。 この動作はプラグ可能で、カスタマイズ可能です。

公開時の認証

この節では、ポートレットが基になるAEM WCM インスタンスとの通信で使用できる認証モードについて説明します。

デフォルトでは、AEMのパブリッシュインスタンスにユーザー情報は送信されません。コンテンツは、常に匿名ユーザーとして表示されます。 ユーザー固有の情報をAEMから配信する場合、または公開用のユーザー認証が必要な場合は、これをオンにする必要があります。

ポートレットの認証設定へのアクセス

ポートレットがAEM WCM インスタンスで使用する認証設定オプションは、Web コンソール(OSGi 設定)で使用できます。

メモ

AEMを操作する場合、OSGi サービス(コンソールまたはリポジトリノード)の設定を管理する方法がいくつかあります。

詳しくは、 OSGi の設定 を参照してください。

ポートレットの認証設定にアクセスするには、次の手順に従います。

  1. 次の URL で Web コンソールにアクセスします。

    https://localhost:8080/cqportlet/cqbridge/system/console

    デフォルト設定での例:

    https://wps-host:10040/wps/PA_CQ5_Portlet/cqbridge/system/console

  2. Web コンソールにログインします。デフォルトの資格情報は、admin/admin です。

  3. コンソールで、「Configuration」を選択します。

  4. Configuration メニューで、設定する特定のサービスを選択します。サービスは、OSGi フレームワーク内のポートレットによって提供されます。

    サービス名 説明
    Day Portal Director Authenticator AEM WCM インスタンスに使用する認証モードを設定します。 選択したモードに応じて、技術ユーザーまたは SSO Cookie の名前を指定できます。 また、AEM WCM パブリッシュインスタンスの認証を有効にすることもできます。
    Day Portal Director File Cache ポートレットがAEM WCM インスタンスから受け取った応答をキャッシュする方法のパラメーターを設定します。
    Day Portal Director HTTP Client Service ポートレットが基になるAEM WCM インスタンスに HTTP 経由で接続する方法を設定します。 例えば、プロキシサーバーを指定できます。
    Day Portal Director Locale Handler ポートレットがサポートするロケールを設定します。 AEM WCM インスタンスへのリクエストはユーザーのロケールに基づいています。例えば、ユーザーの言語が「ドイツ語」の場合、/content/geometrixx/de/ にリクエストされます。
    Day Portal Director Privilege Manager 現在ログインしているユーザーに基づいて、ポートレットで「Web サイト」タブをテストするかどうかを設定します。
    Day Portal Director Toolbar Renderer ポートレットのツールバーのレンダリングをカスタマイズします。
  5. さらに、Web コンソールとログサービスを設定できます。 例えば、Apache Felix OSGi Management Console リンクをクリックして、Web コンソールの管理者資格情報を変更できます。

テクニカルユーザーモード

デフォルトモードでは、AEM WCM オーサーインスタンスのポートレットによって発行されたすべてのリクエストは、現在のポータルユーザーに関係なく、同じテクニカルユーザーを使用して認証されます。 テクニカルユーザーモードは、デフォルトで有効になっています。 このモードは、OSGi 管理コンソールのそれぞれの設定画面で有効または無効にします。

指定されたテクニカルユーザーは AEM WCM オーサーインスタンスに存在する必要があり、公開時の認証​が有効な場合は、パブリッシュインスタンスにも存在する必要があります。オーサリング作業に十分なユーザーアクセス権限を与えてください。

SSO

ポートレットでは、AEMを初期状態で使用する場合に SSO をサポートします。 オーセンティケーターサービスが SSO を使用し、現在のポータルユーザーを cqpsso という cookie として Basic 形式で AEM に送信するように設定することができます。AEM は、パス / に対して SSO 認証ハンドラーを使用するように設定する必要があります。cookie 名をもここで設定する必要があります。

それに従って、AEM リポジトリの crx-quickstart/repository/repository.xml も次のように設定する必要があります。

<LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
  ...
  <param name="trust_credentials_attribute" value="TrustedInfo"/>
  <param name="anonymous_principal" value="anonymous"/>
</LoginModule>

SSO 認証モード

ポートレットは、シングルサインオン (SSO) スキームを使用してAEM WCM を認証できます。 このモードでは、現在ポータルにログインしているユーザーは、SSO Cookie の形式でAEM WCM に転送されます。 SSO モードを使用する場合、AEMポートレットにアクセスできるすべてのポータルユーザーは、基になるAEM WCM インスタンスに対して認識される必要があります。最も一般的には、AEM WCM が LDAP に接続されている形で、事前にユーザーを手動で作成しておく必要があります。 また、ポートレット内で SSO を有効にする前に、基盤の AEM WCM オーサーインスタンス(および​公開時の認証​が有効な場合のパブリッシュインスタンス)を、SSO ベースのリクエストを受け入れるように設定しておく必要もあります。

ポートレットで SSO 認証モードを使用するように設定するには、次の手順を実行します(次の節で詳しく説明)。

  • AEM WCM のリポジトリが信頼された資格情報を受け入れるようにします。
  • AEM WCM で SSO 認証を有効にします。
  • AEMポートレットで SSO 認証を有効にします。

AEM WCM のリポジトリーが信頼できる資格情報を受け入れることを有効にする

AEM WCM で SSO を有効にする前に、AEM WCM から提供される信頼済みの資格情報を受け入れるように基になるリポジトリを設定する必要があります。 これをおこなうには、AEM repository.xml を設定します。

  1. AEM WCM がインストールされているファイルシステムで、次のファイルを開きます。

    //crx-quickstart/repository/repository.xml

  2. この XML ファイル内で LoginModule のエントリを探し、その設定に対して trust_credentials_attribute を追加します。

    <LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
      ...
      <param name="trust_credentials_attribute" value="TrustedInfo"/>
      <param name="anonymous_principal" value="anonymous"/>
    </LoginModule>
    
  3. 変更を有効にするには、AEM WCM を再起動します。

AEM WCM での SSO 認証の有効化

AEM WCM で SSO を有効にするには、AEM WCM の Apache Felix Web Management Console(OSGi) で関連する設定エントリにアクセスします。

  1. URI の https://<AEM-host>:<port>/system/console を使用してコンソールにアクセスします。

  2. 「構成」メニューで、「SSO 認証ハンドラ」を選択します。 この例では、SSO ハンドラーはAEMポートレットが提供する Cookie に基づいて、すべてのパスに対する SSO リクエストを受け付けます。 設定は異なる場合があります。

    パス すべてのリクエストに対して SSO ハンドラーを有効にします
    Cookie 名 cqpsso ポートレットの OSGi コンソールで設定した、ポートレットによって提供される Cookie の名前。
  3. クリック 保存 SSO を有効にします。 SSO がプライマリ認証スキームになりました。

AEM WCM が受け取るリクエストごとに、まず SSO ベースの認証が試行されます。 失敗した場合は、通常の基本認証スキームへのフォールバックが実行されます。 そのため、SSO を使用しないAEM WCM への通常の接続は引き続き可能です。

AEMポートレットでの SSO 認証の有効化

基になるAEM WCM インスタンスが SSO リクエストを受け入れるには、ポートレットの認証モードを次のように切り替える必要があります。 技術 から SSO.

AEM ポートレットで SSO 認証を有効にするには:

  1. URI の https://<aem-host>:<port>/system/console を使用してコンソールにアクセスします。

  2. [Configuration] メニューで、利用可能な設定の一覧から [Day Portal Director Authenticator] を選択します。

  3. 「モード」で「SSO」を選択します。 その他のパラメーターはデフォルト値のままにします。

    chlimage_1-135

  4. 「Save」をクリックして、ポートレットの SSO を有効にします。

    テストの目的で、管理者権限を持つAEM WCM で同じユーザーを作成した後、ポータルの管理者ユーザーでポートレットにアクセスします。

この手順を実行した後、リクエストは SSO を使用して認証されます。 HTTP 通信の一般的なスニペットにより、次の SSO およびポートレット固有のヘッダーが表示されます。

C-12-#001898 -> [GET /mynet/en/_jcr_content/par/textimage/image.img.png HTTP/1.1 ]
C-12-#001963 -> [cq5:locale: en ]
C-12-#001979 -> [cq5:used-locale: en ]
C-12-#002000 -> [cq5:locales: en,en_US ]
C-12-#002023 -> [cqp:user: wpadmin ]
C-12-#002042 -> [cqp:portal: IBM WebSphere Portal/6.1 ]
C-12-#002080 -> [cqp:windowid: 7_CGAH47L000CE302V2KFNOG0084 ]
C-12-#002124 -> [cqp:windowstate: normal ]
C-12-#002149 -> [cqp:portletmode: view ]
C-12-#002172 -> [User-Agent: Jakarta Commons-HttpClient/3.1 ]
C-12-#002216 -> [Host: 10.0.0.68:4502 ]
C-12-#002238 -> [Cookie: $Version=0; cqpsso=Basic+d3BhZG1pbg%3D%3D ]
C-12-#002289 -> [ ]

PIN 認証を有効にする

AEMコンテンツポートレットのデフォルトのインライン編集機能を使用せず、ポータル外のポートレットのオーサリングと管理の一部をAEMオーサーインスタンスで直接使用する場合は、PIN 認証を有効にする必要があります。 また、管理ボタンの設定を変更する必要があります。

Web サイト管理ページを開く、またはポートレットからページを編集する場合、AEMコンテンツポートレットでは新しい PIN 認証が使用されます。 デフォルトでは、ピン認証は無効になっているので、AEMで次の設定変更を行う必要があります。

  1. repository.xml ファイルに信頼できる情報を追加することで、AEMで信頼できる認証を有効にします。

    <LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
      ...
      <param name="trust_credentials_attribute" value="TrustedInfo"/>
    </LoginModule>
    
  2. OSGi 設定コンソール(デフォルトの場所は https://localhost:4502/system/console/configMgr)で、ドロップダウンメニューから「CQ PIN Authentication Handler」を選択します。

  3. を編集します。 URL ルートパス 単一の値のみを含むためのパラメーター /.

権限

ポートレットの一部の機能は、特権によって保護されます。 現在のユーザーがこの関数にアクセスするには、この権限が必要です。 次の権限が事前に定義されています。

  • "toolbar" :ポートレット内のツールバーを表示または使用するための一般的な権限です。
  • prefs :ユーザーがこの権限を持っている場合、ポートレットの環境設定の表示/変更が許可されます。
  • "cq-author:edit" :この権限を持つユーザーは、コンテンツの編集ビューを呼び出すことができます。
  • "cq-author:preview" :この権限を持つユーザーは、プレビューを表示できます。
  • "cq-author:siteadmin" :この権限を持つユーザーは、AEM内で siteadmin を開くことができます。

権限を管理する最善の方法は、ポータルの役割を使用し、これらの権限に役割を割り当てることです。 これは、OSGi 設定を通じておこなうことができます。 「Day Portal Director Privilege Manager」は、権限ごとに一連の役割を設定できます。 ユーザーがいずれかの役割を持っている場合、ユーザーは対応する権限を持ちます。

また、ポートレットインスタンスごとのベースに基づいて、このロールのアクセス権を定義することもできます。 ポートレットの環境設定ダイアログには、上記の権限ごとに入力フィールドが含まれます。 権限ごとに、ポートレットの役割のコンマ区切りリストを設定できます。 値が設定されている場合、これは「Day Portal Director Privilege Manager」サービスのグローバル設定を上書きし、役割が結合されないので、このグローバル設定から同じ役割を追加する必要が生じる場合があります。 値を指定しない場合は、グローバル設定が使用されます。

AEMポートレットアプリケーションのカスタマイズ

指定されたAEMポートレットアプリケーションは、AEMと同様に、Web アプリケーション内で OSGi コンテナを開始します。 このアーキテクチャを使用すると、OSGi の次の利点をすべて利用できます。

  • 更新と拡張が容易
  • ポータルサーバーと通信せずに、ポートレットのホットアップデートを実行できる
  • ポートレットのカスタマイズが容易

ツールバーボタン

ツールバーとそのボタンは設定可能で、カスタマイズできます。 ツールバーに独自のボタンを追加したり、どのモードで表示されるボタンを定義したりできます。 各ボタンは、OSGi 設定を通じて設定できる OSGi サービスです。

OSGi Web コンソールには、 設定 タブをクリックします。 ボタンごとに、このボタンを表示するモードを定義できます。 これにより、例えばすべてのモードを削除して、ボタンを無効にすることができます。

デフォルトでは、AEMコンテンツポートレットはインライン編集機能を使用します。 ただし、編集のためにAEMオーサーインスタンスに切り替える場合は、 SiteAdmin ボタン そして コンテンツファインダーボタン​を無効にします。 編集ボタン. この場合、AEM で PIN 認証を適切に設定してください。

ポートレットの Felix Web コンソールを介してバンドルをインストールすると、ポートレットのツールバーレイアウトをカスタマイズできます。このコンソールには、事前に定義された場所にカスタムの CSS/HTMLが含まれています。

バンドル構造

次に、バンドル構造の例を示します。

$ jar tvf target/toolbarlayout-0.0.1-SNAPSHOT.jar | awk '{print $8}'
META-INF/
META-INF/MANIFEST.MF
/com/day/cq/portlet/toolbar/layout/
/com/day/cq/portlet/toolbar/layout/author.gif
/com/day/cq/portlet/toolbar/layout/back.gif
/com/day/cq/portlet/toolbar/layout/button.html
/com/day/cq/portlet/toolbar/layout/edit.gif
/com/day/cq/portlet/toolbar/layout/manage.html
/com/day/cq/portlet/toolbar/layout/publish.html
/com/day/cq/portlet/toolbar/layout/refresh.gif
/com/day/cq/portlet/toolbar/layout/siteadmin.gif
/com/day/cq/portlet/toolbar/layout/toolbar.css

META-INF フォルダーには、OSGi でバンドルとして識別するために必要な MANIFEST.MF ファイルが含まれます。 次のように表示されます。

Manifest-Version: 1.0
Built-By: djaeggi
Created-By: Apache Maven Bundle Plugin
Import-Package: com.day.cq.portlet.toolbar.layout
Bnd-LastModified: 1234178347159
Export-Package: com.day.cq.portlet.toolbar.layout
Bundle-Version: 0.0.1.SNAPSHOT
Bundle-Name: Company CQ5 Portal Director Portlet Toolbar Layout
Bundle-Description: This bundle provides a custom layout for the CQ5 P
 ortal Director Portlet Toolbar.
Build-Jdk: 1.5.0_16
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.day.cq.portlet.company.toolbarlayout
Tool: Bnd-0.0.255

HTML/CSS/画像が/com/day/cq/portlet/toolbar/layout フォルダー内にあることは、ポートレットによって必須となり、変更できません。 同様に、MANIFEST.MF の Import-Package ヘッダーと Export-Package ヘッダーも/com/day/cq/portlet/toolbar/layout と呼ばれる必要があります。 Bundle-SymbolicName は、一意の完全修飾パッケージ名である必要があります。

Maven などのツールを使用してビルドするか、この節で示すように、関連するヘッダーを設定して jar ファイルを手動で作成できます。

ポートレットツールバービュー

ポートレットのツールバーには、基本的に 2 つのビュー状態があります。 各ビューおよび関連するボタンは、それぞれのボタンファイルを使用してHTMLできます。

公開ビュー

公開ビューには、ツールバーを管理ビューに切り替えるボタンが 1 つだけあります。 公開ビューは、 前のバンドル. HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。

公開ビューのプレースホルダー

プレースホルダー文字列 説明
プレースホルダーが「管理」ボタンに置き換えられます。管理ボタンは、ポートレットの状態を管理状態に切り替えます。

ビューを管理

管理ビューには、編集、Web サイトタブ、更新、戻るの 4 つのボタンがあります。 管理ビューは、 前のバンドル. HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。

[ 管理 ] [ ビュープレースホルダ ]

プレースホルダー文字列 説明
プレースホルダーが「編集」ボタンに置き換えられます。編集ボタンは、現在のページを含む新しいウィンドウを AEM の編集モードで開きます。
AEM WCM の「Web サイト」タブを開くボタンに置き換えられるプレースホルダー。
現在のビューを更新します。
ポートレットをパブリッシュビューに切り替えます。

ボタン

ボタンは、どの表示に対しても、button.html で定義されているのと同じ共通HTMLを使用します。

HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。

「管理」および「公開」ビューボタン

プレースホルダー文字列 説明
ボタンの名前(例: )作成者、戻る、更新​など。
ボタンの CSS ID。
ボタンのターゲットの URL。
ボタンのラベル。
JavaScript onclick 関数(次を含む) {url}) をクリックします。

button.html ファイルの例を次に示します。

<div class="cqp_button">

 <a href="#" onclick="{onclick}">

 <img src="/wps/PA_CQ5_Portlet/cqbridge/static/{id}.gif" alt="{text}"
title="{text}"/>

 </a>
</div>

カスタムレイアウトのインストール

カスタムレイアウトをインストールするには、ポートレットの OSGI Web コンソールの「Bundles」セクションにアクセスして、バンドルをアップロードします。

パッケージ

インストール用のパッケージをアップロードまたは作成する必要がある場合は、詳しい説明について AEM ドキュメントのパッケージマネージャーを参照してください。

すべてのリンクは、ポータルコンテキスト内で動作するように書き換えられます。 デフォルトでは、レンダリングパラメータを持つリンクが使用されます。 Portal DirectorHTMLの書き換えは、代わりにアクションリンクを使用するように設定できます。

また、コンテンツパスを表示するために問い合わせられる追加のリクエストパラメーターを定義することもできます。これは、例えば外部から特定のコンテンツへのリンクがある場合に便利です。

さらに、Portal Director HTML Rewriter に、リンクの書き換え除外を定義するための正規表現のリストを設定することができます。例えば、外部システムへの相対リンクがある場合、それらのリンクをこの除外リストに追加する必要があります。

ローカライゼーション

AEMコンテンツポートレットには、AEMのコンテンツが正しい言語で表示されるように、ローカライゼーション機能が組み込まれています。

これは、次の 2 つの手順でおこないます。

  1. ポータルディレクトリのロケール検出は、ポータルからロケール設定を取得することで、ポータルユーザーのロケールを検出します。 このサービスは、AEMで使用可能な言語のリストを使用して設定する必要があります。
  2. Portal Director Locale Handler は、現在の要求のローカライゼーションを処理します。 リクエストされたコンテンツのパスを取得します。例: /content/geometrixx/en/company.html設定に従って、 en ユーザーの実際のロケールを使用します。

Portal Director Locale Handler には、ロケール情報をチェックするためのパスを設定できます。通常、この設定には /content 以下のすべてと、パス内のロケール情報の位置が含まれます。Portal Director Locale Handler はデフォルトで、AEM 内の多言語サイトの推奨構造に従います。

パス内のロケール情報を処理するための厳格なルールがないサイトの場合は、ロケールハンドラーを独自の実装に置き換えることが可能です。

オプションの OSGi サービス

オプションの OSGi サービスを実装して、ポートレットの様々な部分をカスタマイズできます。 各サービスは Java インターフェイスに対応しています。 このインターフェイスを実装して、バンドルによってポートレットにデプロイすることができます。

RequestTracker ポートレットによってコンテンツが表示されるたびに、リクエストトラッカーに通知が届きます。 これにより、ポートレットの呼び出しを追跡し続けることができます。
InvocationContextListener ポートレットへの各リクエストの開始時と終了時に呼び出されるリスナー。 このリスナーを使用して、現在のリクエストの情報を変更または追加できます。
ErrorHandler レンダリングフェーズ中のエラーに対するカスタムエラーハンドラ。
HttpProcessor このサービスを使用して、AEMに対する各 HTTP 呼び出しに情報を追加できます。
PortletAction ポートレットに独自のアクションを追加します。このアクションは、ポートレットアクションリンクを介して呼び出すことができます。
PortletDecoratorService このサービスを使用して、ポートレットのコンテンツを修飾できます。
ResourceProvider 独自のリソースプロバイダーを追加して、ポートレットリソースリンクを介して一部のリソースをクライアントに配信します。
TextMapper 後処理のHTML、CSS および JavaScript ファイルを作成できます。
ToolbarButton ツールバーに独自のボタンを追加します。
UrlMapper カスタム URL マッピングまたは書き換えを適用するサービスを追加します。
UserInfoProvider ユーザーに関する独自の情報を追加します。 このサービスを使用して、ポータルからポートレットに情報を取得できます。

デフォルトのサービスの置き換え

次のサービスは、(対応する Java インターフェイスと共に)コンテンツポートレットにデフォルトの実装を持っています。 カスタマイズするには、新しいサービス実装を含むバンドルをポートレットアプリケーションにデプロイする必要があります。

このようなサービスを実装する場合は、必ず service.ranking プロパティを正の値に設定します。 デフォルトの実装ではランク 0 が使用され、ポートレットは最もランキングの高いサービスを使用します。

名前 説明 デフォルトの動作
Authenticator 認証情報をAEMに提供します オーサーとパブリッシュの両方に設定可能なテクニカルユーザーを使用します。 または、SSO を使用できます。
HTMLRewriter リンクや画像などを書き換えます。 AEMリンクをポータルリンクに書き換えます。UrlMapper と TextMapper を使用して拡張できます。
HttpClientService すべての HTTP 接続を処理します 標準的な実装
LocaleHandler ロケール情報を処理します ロケールに従ってコンテンツへのリンクを書き換えます。
LocaleDetector ユーザーのロケールを検出します。 ポータルが提供するロケールを使用します。
PrivilegeManager ユーザー権限を確認します ユーザーがコンテンツの編集を許可されている場合は、オーサーインスタンスへのアクセスを確認します
ToolbarRenderer ツールバーをレンダリング ツールバー機能を追加します

ポートレットイベント

ポートレット API(JSR-286) は、ポートレットイベントを指定します。 AEMコンテンツポートレットには統合ブリッジがあり、AEMポートレット用のポートレットイベントが OSGi イベントとして配信されるので、ポートレットイベントの処理がプラグ可能です。

特定のイベントを処理する場合は、デプロイメント記述子でイベントを受け取るものとして宣言し(またはポータルサーバーを介して設定します)、EventHandler インターフェイスを宣言する OSGi サービスを実装します( OSGi EventAdmin の仕様を参照)。

ポートレットイベントが発生するたびに、特定の OSGi イベントが送信され、ハンドラーを呼び出します。 ハンドラーはすべてのコンテキスト情報を取得し、それに応じてポートレットのステータスを更新したり、新しいイベントを送信したりできます。 基本的に、handle メソッド内ではポートレットイベントフェーズのすべての機能を使用できます。

AEM as a Portal の使用

ポートレットコンポーネントを使用して、ポートレットウィンドウをAEMページに追加します。 アプリケーションサーバーにインストールする共有ライブラリを使用すると、ポートレットコンポーネントはデプロイ済みのポートレットアプリケーションを検出できます。

AEMをポータルとして使用するには、次のタスクを実行します。

  1. ポートレットコンポーネントと共有ライブラリをインストールします。
  2. ポートレットコンポーネントをSidekickに追加します。
  3. ポータルコンポーネントに表示するポートレットを含む Web アプリケーションを設定およびデプロイします。
  4. ポートレットコンポーネントをページに追加し、表示するポートレットを選択します。
メモ

ポートレットコンポーネントは、AEMが Web アプリケーションとしてデプロイされている場合にのみ使用できます。 (Installing AEM With an Application Server を参照してください。.)

ポートレットコンポーネントのインストール

AEM Quickstart JAR ファイルには、ポートレットコンポーネントファイルが含まれています。 ファイル(cq-portlet-components.zip)を取得するには、Quickstart を実行するか、その内容を抽出します。

  1. Quickstart JAR ファイルを実行するかその内容を抽出して、次の場所にある cq-portlet-components.zip ファイルを特定します。

    • クイックスタートを実行: crx-quickstart/opt/portal
    • クイックスタートの内容を抽出:static/opt/portal
  2. アプリケーションサーバーにデプロイされている CQ5 オーサーインスタンスのパッケージマネージャーを開きます(https://appserverhost:port/cq5author/crx/packmgr)。

  3. パッケージマネージャーを使用して、cq-portlets-components.zip パッケージをアップロードし、インストールします

    このパッケージによって、リポジトリ内の /libs/portal/director フォルダーに cq-portlet-director-sharedlibs-x.x.x.jar がインストールされます。

  4. cq-portlet-director-sharedlibs-x.x.x.jar をハードドライブにコピーします。 ファイルを取得するには、FileVault や WebDAV クライアントなどの任意の方法を使用します。

  5. cq-portlet-director-sharedlibs.x.x.x.jar ファイルをアプリケーションサーバーの共有ライブラリフォルダーに移動し、デプロイされたポートレットアプリケーションでクラスを使用できるようにします。

ポートレットコンポーネントのSidekickへの追加

作成者が使用できるように、ポートレットコンポーネントを段落システムに追加します。

  1. サイドキックで、定規アイコンをクリックしてデザインモードに切り替えます。

  2. 最初の段落の上にあるDesign of parヘッダーの横の「編集」をクリックします。

  3. 一般」コンポーネントカテゴリで、ポートレットコンポーネントの横にあるチェックボックスをオンにして「OK」をクリックします。

chlimage_1-25

ポートレットアプリケーションの設定とデプロイ

ポートレットをアプリケーションサーバーの Web コンテナにデプロイして、ポータルコンポーネントで使用できるようにします。 ポートレットアプリケーションをデプロイする前に、このアプリケーションが AEM ポータルコンテナサーブレットを読み込むように設定する必要があります。この設定によって、ポートレットコンポーネントがポートレットにアクセスできるようになります。

  1. ポートレットアプリケーションの WAR ファイルの内容を抽出します。

    ヒント: jar xf nameofapp.war コマンドによってファイルを抽出します。

  2. web.xml ファイルをテキストエディターで開きます。

  3. 次のサーブレット設定を web-app 要素内に追加します。

    <servlet>
            <servlet-name>slingportal</servlet-name>
            <servlet-class>org.apache.sling.portal.container.api.ContainerServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
            <servlet-name>slingportal</servlet-name>
            <url-pattern>/SlingPortletInvoker</url-pattern>
    </servlet-mapping>
    
  4. web.xml ファイルを保存し、WAR ファイルを再度パッケージ化します。

    ヒント: jar cvf nameofapp.war *コマンドにより、現在のディレクトリの内容を nameofapp.war ファイルに追加します。

  5. ポートレットアプリケーションをアプリケーションサーバーにデプロイします。 詳しくは、使用しているアプリケーションサーバーのドキュメントを参照してください。

AEMページへのポートレットの追加

ポータルコンポーネントを使用して、ポートレットウィンドウを Web ページに追加します。 コンポーネントのプロパティを使用して、表示するポートレットを指定します。

  1. Web ページで、 ポートレット コンポーネントを「一般」グループからSidekickに

    メモ

    コンポーネントをページにドラッグした後、ページを再読み込みして、正しく機能することを確認します。

  2. コンポーネントをダブルクリックして、ポートレットのプロパティを開きます。

  3. Adobe Analytics の ポートレットエンティティ ドロップダウンメニューから、リストからポートレットを選択します。

  4. ポートレットのタイトルバーを表示するかどうかに応じて、「タイトルバーを隠す」チェックボックスをオンまたはオフにします。

  5. Adobe Analytics の ポートレットウィンドウ 必要に応じて、一意のポートレットウィンドウ ID を入力します。

    メモ

    同じページで同じポートレットを複数回使用する場合は、各ポートレットに異なるウィンドウ ID を付けます。

  6. OK」をクリックします。ポートレットがAEMページに表示されます。

    chlimage_1-136

ポートレットでのAEMのインストール、設定、使用

AEM WCM が提供するコンテンツにアクセスするには、ポータルサーバーがAEM Portal Directorポートレットに適合している必要があります。 これをおこなうには、この節で説明する手順に従って、ポートレットをインストール、設定、ポータルページに追加します。

デフォルトでは、ポートレットは localhost:4503 のパブリッシュインスタンスに接続し、localhost:4502 のオーサーインスタンスに接続します。 これらの値は、ポートレットのデプロイ時に変更できます。 ポータルディレクタは、リポジトリ内の/libs/portal/directory の下にコンテンツとして表示されます。 使用する前に、アプリケーションの war ファイルをダウンロードする必要があります。

WAR ファイルのダウンロード

  1. WebDAV または CRXDE Lite を使用して、/libs/portal/director に移動します。

  2. cq-portlet-webapp.war をダウンロードします。

メモ

これらの手順では、Websphere ポータルを例として使用しますが、可能な限り一般的なものです。手順は、他の Web ポータルでは異なります。 手順は基本的にすべての Web ポータルで同じですが、特定の Web ポータルの手順を再利用する必要があります。

ポートレットのインストール

ポートレットをインストールするには:

  1. 管理者権限でポータルにログインします。

  2. Web ポータルのポートレット管理部分に移動します。

  3. 「インストール」をクリックし、ダウンロードしたAEMポートレットアプリケーション (cq-portlet-webapp.war) を参照して、そのポートレットに関するその他の重要な情報を入力します。

    他のポートレット基本情報については、デフォルト値を使用するか、値を変更します。デフォルト値を使用する場合、ポートレットのアドレスは https://<wps-host>:<port>/wps/PA_CQ5_Portlet になります。ポートレットによって提供される OSGi 管理コンソールのアドレスは https://<wps-host>:<port>/wps/ PA_CQ5_Portlet/cqbridge/system/console になります(デフォルトのユーザー名とパスワードは admin/admin です)。

  4. ポートレットアプリケーションが自動的に開始するようにするには、そのオプションまたはチェックボックスをオンにし、変更を保存します。 インストールが成功したことを示すメッセージが表示されます。

ポートレットの設定

ポートレットをインストールした後、基になるAEMインスタンス(オーサーおよびパブリッシュ)の URL を知るように設定する必要があります。 また、他のオプションも設定できます。

ポートレットを設定するには:

  1. アプリサーバーのポータル管理ウィンドウで、ポートレット管理に移動します。すべてのポートレットが表示され、AEM Portal Directorポートレットを選択します。

  2. 必要に応じて、ポートレットを設定します。 例えば、オーサーインスタンスとパブリッシュインスタンスの URL と、開始パスの URL を変更する必要が生じる場合があります。 デフォルトの設定については、ポートレット環境設定を参照してください。

    メモ

    ポートレットが、とは異なるコンテキストパスで実行されているAEMオーサーインスタンスおよびパブリッシュインスタンスに接続するように設定されている場合。 /、強制を有効にする必要があります CQUrlInfo これらのAEMインスタンスの Html Library Manager 設定(例えば、Felix Webconsole を使用)では、編集が機能せず、環境設定ダイアログは表示されません。

  3. アプリケーションサーバーで設定の変更を保存します。

  4. ポートレットの OSGI 管理コンソールに移動します。デフォルトの場所は https://<wps-host>:<port>/wps/PA_CQ5_Portlet/cqbridge/system/console/configMgr です。デフォルトのユーザー名とパスワードは admin/admin です。

  5. Day Portal Director CQ Server Configuration」設定を選択し、次の値を編集します。

    • オーサーのベース URL:AEMオーサーインスタンスのベース URL。
    • ベース URL を公開:AEMパブリッシュインスタンスのベース URL。
    • Author Is Used As Publish:オーサーインスタンスが(開発用に)パブリッシュインスタンスとして
      使用されているかどうかを指定します。

    chlimage_1-137

  6. 保存」をクリックします。これで、ポートレットをポータルページに追加してポータルを使用できるようになりました。

コンテンツの URL

AEMからコンテンツが要求されると、ポートレットは現在の表示モード(パブリッシュまたはオーサー)と現在のパスを使用して、完全な URL を組み立てます。 デフォルト値を使用した場合の最初の URL は https://localhost:4503/content/geometrixx/en.portlet.html です。htmlSelector の値が URL の拡張子の前に自動的に追加されます。

ポートレットがヘルプモードに切り替えられ、appendHelpViewModeAsSelector が選択された場合は、同じように help セレクターが付加されます(例:https://localhost:4503/content/geometrixx/en.portlet.html.help)。ポートレットウィンドウが最大化され、appendMaxWindowStateAsSelector が選択された場合は、同じようにそのセレクターが付加されます(例:https://localhost:4503/content/geometrixx/en.portlet.max.help)。

セレクターはAEMで評価でき、異なるセレクターに対しては異なるテンプレートを使用できます。

AEMでのコンテンツ URL マップの使用

通常、開始パスはAEM内のコンテンツを直接指します。 ポートレット環境設定ではなく AEM 内で開始パスを管理する場合は、開始パスが AEM 内のコンテンツマップを示すように設定できます(例:/var/portlets)。この場合、AEMで実行するスクリプトは、ポートレットから送信された情報を使用して、開始 URL を決定できます。 正しい URL にリダイレクトする必要があります。

ポータルページへのポートレットの追加

ポートレットをポータルページに追加するには、次の手順を実行します。

  1. アプリサーバーの管理ウィンドウにいることを確認し、ページを管理する場所に移動します。 ( 例えば、WebSphere 6.1 では、 ページを管理) をクリックします。
  2. ポートレットの名前を選択し、既存のページを選択するか、ページを作成します。
  3. ページレイアウトを編集します。
  4. ポートレットを選択し、コンテナに追加します。
  5. 変更を保存します。

ポートレットの使用

ポートレットに追加したページにアクセスするには、次の手順を実行します。

  1. ポートレットのパーソナライゼーションメニューで、ポータルでの設定と同じようにポートレットを設定します。
  2. 設定を開き(ポートレットには、ポートレットの設定で設定された公開開始 URL が表示されます)、必要に応じて編集を行い、保存します。

このページ