Seguridad para componentes remotos

Oracle Content Management permite a desarrolladores de terceros integrar sus componentes personalizados en la plataforma de Oracle Content Management, pero estos se almacenan en un servidor remoto.

Cada componente remoto debe haber registrado valores y puntos finales de representación con Oracle Content Management. Además de los puntos finales, los desarrolladores también deben proporcionar una clave secreta única para el componente registrado.

Oracle Content Management llama a los puntos finales del componente registrado para realizar el contenido en la página de un sitio. Debido a que estos puntos finales están expuestos a la red pública Internet, los desarrolladores deben verificar que se esté llamando a los puntos finales de un componente remoto registrado desde Oracle Content Management. Para verificar la autenticidad del emisor de llamada, se entrega un token firmado en los puntos finales registrados de una URL. Se autentica a la parte que realiza la llamada verificando la firma digital embebida en el token firmado con la clave secreta del componente remoto proporcionada durante el proceso de registro.

El formato del token es:

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

A continuación se muestra un token de ejemplo transferido a los puntos finales de la aplicación registrada:

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

El token consta de dos partes distintas: datos y firma separados por un delimitador '.'.

Como directriz general, los desarrolladores siempre deben autenticar el token en el modo de edición o vista previa antes de otorgar acceso a los puntos finales registrados de un componente. Además, mientras se autentica a la parte que realiza la llamada en el punto final de configuración, los desarrolladores siempre deben encargarse de buscar un valor SITE_OWNER en el campo permissions del token. El campo permissions del token muestra el valor SITE_OWNER solo en el modo de edición. Un token generado durante una sesión de edición nunca se vuelve a guardar en el modelo de página y se cambia por un token de tiempo de ejecución que tiene un valor NULL en el campo permissions.

Datos

La parte de datos de la instancia es una cadena codificada JSON Base64. A continuación se muestra la estructura de la cadena JSON:

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
Nombre de campo Descripción

instanceid

Identificador único de un componente para un inquilino de Oracle Content Management.

signdate

Fecha de generación de la firma.

sitedomain

Nombre del dominio de la instancia de Oracle Content Management.

permissions

Juego de permisos del miembro del sitio. En el modo de edición, tendrá el valor "SITE_OWNER"; de lo contrario, no tendrá ningún valor.

entitlements

Lista de funciones adicionales compradas por el propietario del sitio.

Firma

La parte de datos de la instancia de componente remoto se serializa antes de que la firme una APP_SECRET_KEY. Esta clave secreta se debe generar y mostrar al desarrollador mientras se registra el componente. La firma se calcula generando un hash de la porción de datos de la instancia de componente (una estructura JSON serializada) con la clave secreta, como se muestra a continuación:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

El algoritmo hash que se utiliza para generar la firma es SHA256. El token es, por tanto, la concatenación de la estructura JSON serializada y el componente de firma generado, como se muestra a continuación:

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