Sécurité des composants distants

Oracle Content Management permet aux développeurs tiers d'intégrer leurs composants personnalisés dans la plate-forme Oracle Content Management, mais ils doivent être stockés sur un serveur distant.

Chaque composant distant doit posséder des paramètres et des adresses d'affichage inscrits auprès d'Oracle Content Management. Outre les adresses, les développeurs doivent également fournir une clé secrète propre au composant inscrit.

Oracle Content Management appelle les adresses des composants inscrits pour afficher le contenu sur la page de site. Comme ces adresses sont exposées sur le réseau public Internet, les développeurs doivent vérifier que les adresses des composants distants inscrits sont bien appelées à partir d'Oracle Content Management. Pour vérifier l'authenticité de l'appelant, un jeton signé est fourni aux adresses inscrites d'une URL. La partie appelante est authentifiée par la vérification de la signature numérique imbriquée dans le jeton signé avec la clé secrète du composant distant qui a été fournie lors du processus d'inscription.

Le format du jeton est le suivant :

{base64 encoded serialized JSON data}.{base64 encoded signature}

Exemple de jeton transmis à des adresses d'application inscrites :

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

Le jeton est constitué de deux parties distinctes : les données et la signature, séparées par le délimiteur ".".

Il est généralement recommandé aux développeurs de toujours authentifier le jeton en mode Modification ou Aperçu avant d'accorder l'accès aux adresses inscrites d'un composant. En outre, lors de l'authentification de la partie appelante dans l'adresse des paramètres, il est conseillé aux développeurs de toujours vérifier la valeur SITE_OWNER du champ permissions du jeton. Le champ permissions du jeton affiche la valeur SITE_OWNER uniquement en mode Modification. Un jeton généré lors d'une session de modification n'est jamais persistant dans le modèle de page et il est remplacé par un jeton d'exécution qui affiche la valeur NULL dans le champ permissions.

Données

La partie données de l'instance est une chaîne JSON encodée en base64. Voici la structure de la chaîne JSON :

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
Nom de champ Description

instanceid

Identificateur unique d'un composant pour un locataire Oracle Content Management.

signdate

Date de génération de la signature.

sitedomain

Nom de domaine de l'instance Oracle Content Management.

permissions

Ensemble des droits d'accès du membre de site. En mode Modification, le champ affichera la valeur "SITE_OWNER" ; dans les autres cas, il n'affichera aucune valeur.

entitlements

Liste des fonctionnalités Premium achetées par le propriétaire du site.

Signature

La partie données de l'instance de composant distant est sérialisée avant d'être signée par une clé secrète APP_SECRET_KEY. Cette clé secrète doit être générée et présentée au développeur lors de l'inscription du composant. La signature est calculée en générant un hachage de la partie données de l'instance de composant (une structure JSON sérialisée) avec la clé secrète, comme indiqué ici :

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

L'algorithme de hachage utilisé pour la génération de la signature est SHA256. Le jeton est alors la concaténation de la structure JSON sérialisée et du composant de signature généré comme indiqué ici :

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