Securitate pentru componente la distanţă

Oracle Content Management permite dezvoltatorilor terţi să-şi integreze componentele personalizate în platforma Oracle Content Management, dar să le stocheze pe un server la distanţă.

Fiecare componentă la distanţă trebuie să aibă setări şi puncte finale de randare înregistrate în Oracle Content Management. În plus faţă de punctele finale, dezvoltatorii trebuie să furnizeze şi o cheie secretă, unică pentru componenta înregistrată.

Oracle Content Management invocă punctele finale ale componentei înregistrate pentru a reflecta conţinutul într-o pagină a site-ului. Deoarece aceste puncte finale sunt expuse public pe internet, dezvoltatorii trebuie să se asigure că punctele finale ale unei componente la distanţă înregistrate sunt invocate din Oracle Content Management. Pentru a se verifica autenticitatea apelantului, un token semnat este transmis către punctele finale înregistrate ale unei adrese URL. Partea apelantă este autentificată prin verificarea semnăturii digitale încorporate în tokenul semnat cu cheia secretă a componentei la distanţă, care a fost furnizată în timpul procesului de înregistrare.

Formatul tokenului este următorul:

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

Mai jos puteţi vedea un exemplu de token transmis către punctele finale înregistrate ale aplicaţiei:

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

Tokenul este alcătuit din două părţi distincte: datele şi semnătura, separate de un delimitator '.'.

Ca indicaţie generală, înainte de a acorda accesul la punctele finale înregistrate ale unei componente, dezvoltatorii trebuie întotdeauna să autentifice tokenul în modul Editare sau Previzualizare. În plus, în timpul autentificării părţii apelante la nivelul punctului final pentru setări, dezvoltatorii trebuie întotdeauna să aibă grijă să caute o valoare SITE_OWNER în câmpul permissions (permisiuni) al tokenului. Câmpul permissions (permisiuni) al tokenului arată valoarea SITE_OWNER numai în modul Editare. Un token generat în timpul unei sesiuni de editate nu revine niciodată la modelul de pagină, fiind anulat la runtime printr-un token care are o valoare NULL în câmpul permissions (permisiuni).

Date

Partea de date a instanţei reprezintă un şir JSON codificat prin algoritmul Base64. Structura şirului JSON este următoarea:

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
Nume câmp Descriere

instanceid

Identificatorul unic al unei componente pentru o entitate găzduită Oracle Content Management.

signdate

Data generării semnăturii.

sitedomain

Numele domeniului pentru instanţa Oracle Content Management.

permissions

Setul de permisiuni al membrului site-ului. În modul Editare, va avea valoarea "SITE_OWNER"; altfel, nu va avea nicio valoare.

entitlements

Lista caracteristicilor premium achiziţionate de responsabilul site-ului.

Semnătură

Partea de date a instanţei unei componente la distanţă este serializată înainte de a fi semnată cu o cheie APP_SECRET_KEY. Această cheie secretă trebuie să fie generată şi apoi afişată dezvoltatorului în timpul înregistrării componentei. Semnătura este calculată prin generarea unei valori hash aferente părţii de date a instanţei componentei (o structură JSON serializată) cu cheia secretă, aşa cum se arată aici:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

Algoritmul hash utilizat pentru generarea semnăturii este SHA256. Tokenul rezultă prin concatenarea structurii JSON serializate cu componenta de semnătură generată, aşa cum se arată aici:

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