リモート・コンポーネントのセキュリティ
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つの別個の部分であるデータと署名で構成されています。
一般的なガイドラインとして、開発者は、コンポーネントの登録済エンドポイントへのアクセス権を付与する前に、必ず編集モードかプレビュー・モードでトークンを認証する必要があります。 また、設定エンドポイントで呼出し元パーティを認証する場合、開発者は常に、トークンの「許可」フィールドのSITE_OWNER
値を検索するように注意する必要があります。 トークンのpermissionsフィールドには、編集モードでのみSITE_OWNER
値が表示されます。 編集セッション中に生成されたトークンは、ページ・モデルに戻されることはなく、「許可」フィールドに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}