Oracle Content Managementでは、サード・パーティの開発者が、カスタム・コンポーネントをOracle Content Managementプラットフォームに統合できますが、リモート・サーバーに格納することもできます。
各リモート・コンポーネントは、設定およびレンダリングのエンドポイントがOracle Content Managementに登録されている必要があります。エンドポイントに加えて、開発者は、登録済コンポーネント固有の秘密キーを提供する必要もあります。
Oracle Content Managementは、登録済コンポーネントのエンドポイントを呼び出して、サイト・ページ内のコンテンツを実現します。これらのエンドポイントはパブリック・インターネットに公開されるため、開発者は、登録済リモート・コンポーネントのエンドポイントがOracle Content Managementから呼び出されていることを確認する必要があります。呼出し元の信頼性を確認するために、署名済トークンがURLの登録済エンドポイントに送信されます。呼出し元は、登録プロセス中に提供されたリモート・コンポーネントの秘密キーとともに署名済トークンに埋め込まれたデジタル署名を確認することで、認証されます。
トークンのフォーマットは次のとおりです:
{base64 encoded serialized JSON data}.{base64 encoded signature}
登録済アプリケーション・エンドポイントに渡されたサンプル・トークンは次のとおりです:
eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=
トークンは、「.」デリミタで区切られた2つの別個の部分であるデータと署名で構成されています。
一般的なガイドラインとして、開発者は、コンポーネントの登録済エンドポイントへのアクセス権を付与する前に、必ず編集モードかプレビュー・モードでトークンを認証する必要があります。さらに、設定エンドポイントで呼出し元を認証する際に、開発者は常にトークンのpermissionsフィールドでSITE_OWNER
値を調べるよう注意する必要があります。トークンのpermissionsフィールドには、編集モードの場合のみSITE_OWNER
値が表示されます。編集セッション中に生成されたトークンは、ページ・モデルには永続化されず、permissionsフィールドでNULL
値を持つランタイム・トークンで切り替えられます。
データ
インスタンスのデータ部分は、Base64 JSONでエンコードされた文字列です。JSON文字列の構造を次に示します:
{ "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E", "permissions": "", "entitlements": "", "signdate": "1435426735293", "sitedomain": "service1-tenant4.localhost" }
フィールド名 | 説明 |
---|---|
|
Oracle Content Managementテナントに対するコンポーネントの一意の識別子。 |
|
署名の生成日。 |
|
Oracle Content Managementインスタンスのドメイン名。 |
|
サイト・メンバーの権限セット。編集モードでは、値 |
|
サイト所有者によって購入されたプレミアム機能のリスト。 |
署名
リモート・コンポーネント・インスタンスのデータ部分は、APP_SECRET_KEY
によって署名される前にシリアル化されます。コンポーネントの登録時には、この秘密鍵が生成され、開発者に示される必要があります。署名は、次に示すように、秘密鍵を使用してコンポーネント・インスタンスのデータ部分(シリアル化されたJSON構造)のハッシュを生成することによって計算されます:
$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)
署名の生成に使用されるハッシュ・アルゴリズムはSHA256です。このトークンは、次に示すように、シリアル化されたJSON構造と生成された署名コンポーネントを連結したものです:
$instance = {base64encoded serialized JSON structure}.{base64encoded $signature}