O Oracle Content Management permite que os programadores de terceiros integrem os respetivos componentes customizados na plataforma do Oracle Content Management, mas estes ficam armazenados num servidor remoto.
Cada componente remoto deve ter definições e endpoints de renderização registados no Oracle Content Management. Além dos endpoints, os programadores também devem fornecer uma chave secreta exclusiva do componente registado.
O Oracle Content Management invoca os endpoints do componente registado para realizar o conteúdo numa página do site. Uma vez que estes endpoints estão expostos à Internet pública, os programadores devem verificar se os endpoints de um componente remoto registado estão a ser invocados a partir do Oracle Content Management. Para verificar a autenticidade do chamador, um token assinado é entregue aos endpoints registados de um URL. A entidade chamadora é autenticada através da verificação da assinatura digital incorporada no token assinado com a chave secreta do componente remoto que foi fornecida durante o processo de registo.
O formato do token é:
{base64 encoded serialized JSON data}.{base64 encoded signature}
Segue-se um token de exemplo transmitido aos endpoints da aplicação registada:
eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=
O token é constituído por duas partes distintas: dados e assinatura separados por um delimitador '.'.
Como diretriz geral, os programadores devem autenticar sempre o token no modo de Edição ou de Pré-Visualização antes de concederem acesso aos endpoints registados de um componente. Além disso, na autenticação da entidade chamadora no endpoint das definições, os programadores devem ter sempre o cuidado de procurar um valor SITE_OWNER
no campo permissions do token. O campo permissions do token só mostra o valor SITE_OWNER
no modo de Edição. Um token gerado durante uma sessão de edição nunca é tornado persistente de novo para o modelo da página e é trocado por um token de runtime com um valor NULL
no campo permissions.
Dados
A parte de dados da instância é uma cadeia de caracteres com codificação Base64 JSON. Segue-se a estrutura da cadeia de caracteres de JSON:
{ "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E", "permissions": "", "entitlements": "", "signdate": "1435426735293", "sitedomain": "service1-tenant4.localhost" }
Nome do Campo | Descrição |
---|---|
|
Identificador exclusivo de um componente para um tenant do Oracle Content Management. |
|
Data de geração da assinatura. |
|
Nome do domínio da instância do Oracle Content Management. |
|
Conjunto de permissões do membro do site. No modo de Edição, terá o valor |
|
Lista de funcionalidades premium adquiridas pelo proprietário do site. |
Assinatura
A parte de dados da instância do componente remoto é sequenciada antes de ser assinada por APP_SECRET_KEY
. Esta chave secreta deve ser gerada e mostrada ao programador ao registar o componente. A assinatura é calculada gerando um hash da parte de dados da instância do componente (uma estrutura JSON sequenciada) com a chave secreta, conforme mostrado aqui:
$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)
O algoritmo hash utilizado na geração da assinatura é SHA256. O token é então a concatenação da estrutura JSON sequenciada e do componente de assinatura gerado conforme mostrado aqui:
$instance = {base64encoded serialized JSON structure}.{base64encoded $signature}