Sobre ID da Instância e Estrutura de Componentes Renderizados em iFrames

O ID da Instância do componente é o identificador exclusivo de um componente renderizado em um iframe dentro de um site.

Quando um usuário arrasta e solta um componente renderizado em um frame do Catálogo de Componentes para uma página do site, uma chamada de provisionamento é feita ao Oracle Sites Cloud Service para gerar um novo ID de instância exclusivo do componente. É garantido que esse ID seja exclusivo e todas as instâncias do componente provisionadas nesse serviço obterão o mesmo ID de instância.

Um ID de instância do componente contém informações adicionais que podem ser usadas para proteger as definições e o uso de um componente renderizado em um iframe, de modo que o componente possa assegurar-se de que a atualização das Definições esteja vindo de um local confiável.

O parâmetro de ID da instância permite que os desenvolvedores identifiquem o site e autentiquem a parte que faz a chamada. O chamador é autenticado verificando uma assinatura digital que é gerada usando a chave secreta do componente. A chave secreta é gerada durante o processo de registro do componente.

A instância do componente consiste em duas partes separadas por um delimitador ‘.’: dados e estrutura.

Instância do Componente: Dados

A parte de dados da instância de um componente renderizado em um iframe é uma string codificada por Base64 JSON. Esta é a estrutura da string JSON:

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
Nome do Campo Descrição

instanceid

Identificador exclusivo de um componente renderizado em um frame embutido para um tenant do Oracle Content Management.

signdate

Data da geração da assinatura.

sitedomain

Nome de domínio da instância do Oracle Content Management.

permissions

Conjunto de permissões do membro do site. No modo de edição, terá o valor "SITE_OWNER"; caso contrário, não terá qualquer valor.

entitlements

Lista de recursos premium comprados pelo proprietário do site.

Instância do Componente: Assinatura

A parte de dados da instância do componente é serializada antes de ser assinada por um APP_SECRET_KEY. Essa chave secreta deve ser gerada e mostrada ao desenvolvedor ao registrar o componente. A assinatura é calculada com a geração de um hash da parte de dados da instância do componente (uma estrutura JSON serializada) com a chave secreta, conforme mostrado aqui:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

O algoritmo de hash usado na geração da assinatura é SHA256. O token então é a concatenação da estrutura JSON serializada e o componente da assinatura gerada, conforme mostrado aqui:

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

Exemplo:

//base64 encoded serialized object           //signature
eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=