Oracle Content Management umożliwia programistom z podmiotów trzecich integrowanie ich własnych niestandardowych składników z platformą Oracle Content Management, lecz składniki te muszą być przechowywane na serwerze odległym.
Każdy składnik odległy musi mieć zarejestrowane — z Oracle Content Management — ustawienia i punkty końcowe renderingu. Programiści musza także dostarczyć, oprócz punktów końcowych, tajny unikatowy klucz rejestrowanego składnika.
Oracle Content Management, aby urzeczywistnić zawartość na stronie serwisu, wywołuje zarejestrowane punkty końcowe składnika. Ponieważ te punkty końcowe są eksponowane w publicznym Internecie, programiści powinni sprawdzać, czy zarejestrowane punkty końcowe składnika odległego są wywoływane z Oracle Content Management. W celu sprawdzenia autentyczności wywołującego jest do zarejestrowanych punktów końcowych URL dostarczany podpisany token. Podmiot wywołujący jest identyfikowany przez sprawdzenie podpisu cyfrowego, osadzonego w podpisanym tokenie wraz z tajnym kluczem składnika odległego, który to klucz został dostarczony w trakcie procesu rejestracji.
Format tokenu ma następującą postać:
{base64 encoded serialized JSON data}.{base64 encoded signature}
Poniżej jest pokazany przykładowy token przekazywany do zarejestrowanych punktów końcowych aplikacji:
eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=
Token składa się z dwóch części rozdzielonych kropką (.); są to: dane i podpis.
Programieści z zasady powinni zawsze — przed udzieleniem dostępu do zarejestrownych punktów końcowych składnika odległego — identyfikować token w trybie edycji lub podglądu. Ponadto, identyfikując podmiot wywołujący w punkcie końcowym ustawień, programiści powinni zawsze zadbać o sprawdzanie wartości SITE_OWNER
w polu permissions tokenu. Pole permissions tokenu pokazuje wartość SITE_OWNER
tylko w trybie edycji. Wygenerowany w trakcie sesji edycji token nigdy nie jest utrwalany w modelu strony i jest wyłączany za pomocą tokenu wykonawczego mającego w polu permissions wartość NULL
.
Dane
Część "dane" instancji ma postać napisu w notacji JSON Base64. Struktura napisu JSON przedstawia się następująco:
{ "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E", "permissions": "", "entitlements": "", "signdate": "1435426735293", "sitedomain": "service1-tenant4.localhost" }
Nazwa pola | Opis |
---|---|
|
Unikatowy identyfikator składnika dla dzierżawy Oracle Content Management. |
|
Data wygenerowania podpisu. |
|
Nazwa domeny instancji Oracle Content Management. |
|
Zestaw uprawnień wspólużytkownika serwisu. W trybie edycji będzie mieć wartość |
|
Lista funkcji "premium" nabytych przez właściciela serwisu. |
Podpis
Część "dane" instancji składnika odległego jest serializowana, zanim instancja zostanie podpisana za pomocą tajnego klucza APP_SECRET_KEY
. Tajny klucz musi zostać wygenerowany i pokazany programiście podczas rejestracji składnika. Podpis jest obliczany przez wygenerowanie skrótu (hash) części "dane" składnika instancji (serializowana struktura JSON) przy użyciu tajnego klucza, jak pokazano poniżej:
$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)
Algorytmem haszowania, używanym do wygenerowania podpisu, jest SHA256. Token stanowi wówczas połączenie serializowanej struktury JSON i wygenerowanego składnika podpisu, jak pokazano poniżej:
$instance = {base64encoded serialized JSON structure}.{base64encoded $signature}