リモート・コンポーネントのセキュリティ

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"
}
フィールド名 説明

instanceid

Oracle Content Managementテナントに対するコンポーネントの一意の識別子。

signdate

署名の生成日。

sitedomain

Oracle Content Managementインスタンスのドメイン名。

permissions

サイト・メンバーの権限セット。編集モードでは、値SITE_OWNERを持ちます。そうでない場合、値を持ちません。

entitlements

サイト所有者によって購入されたプレミアム機能のリスト。

署名

リモート・コンポーネント・インスタンスのデータ部分は、APP_SECRET_KEYによって署名される前にシリアル化されます。コンポーネントの登録時には、この秘密鍵が生成され、開発者に示される必要があります。署名は、次に示すように、秘密鍵を使用してコンポーネント・インスタンスのデータ部分(シリアル化されたJSON構造)のハッシュを生成することによって計算されます:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

署名の生成に使用されるハッシュ・アルゴリズムはSHA256です。このトークンは、次に示すように、シリアル化されたJSON構造と生成された署名コンポーネントを連結したものです:

$instance = {base64encoded serialized JSON structure}.{base64encoded $signature}