Zabezpečenie vzdialených komponentov

Služba Oracle Content Management umožňuje vývojárom tretích strán integrovať vlastné komponenty na platformu Oracle Content Management, pričom zostávajú uložené na vzdialenom serveri.

Každý vzdialený komponent musí mať nastavenia a koncové body vykreslenia zaregistrované v službe Oracle Content Management. Okrem koncových bodov musia vývojári zadať aj tajný kľúč, ktorý je jednoznačný pre zaregistrovaný komponent.

Služba Oracle Content Management vyvolá koncové body zaregistrovaného komponentu na realizáciu obsahu na stránke lokality. Koncové body sú prístupné na verejnom internete, preto by vývojári mali overiť, či koncové body zaregistrovaného vzdialeného komponentu sú vyvolané zo služby Oracle Content Management. Na overenie autentickosti volajúceho sa do registrovaných koncových bodov adresy URL doručí podpísaný token. Volajúca strana sa autentifikuje tak, že digitálny podpis vnorený do podpísaného tokenu sa overí pomocou tajného kľúča vzdialeného komponentu, ktorý bol zadaný počas procesu registrácie.

Formát tokenu vyzerá takto:

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

Vzorový token odovzdaný do zaregistrovaných koncových bodov aplikácie:

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

Token sa skladá z dvoch odlišných častí: dát a podpisu, ktoré sú oddelené oddeľovačom ".".

Vo všeobecnosti by vývojári mali vždy autentifikovať token v režime úprav alebo ukážky, a to pred udelením prístupu k zaregistrovaným koncovým bodom komponentu. Okrem toho by vývojári počas autentifikácie volajúcej strany v koncovom bode nastavení mali vždy vyhľadať hodnotu SITE_OWNER v poli permissions tokenu. V poli permissions tokenu sa zobrazuje hodnota SITE_OWNER len v režime úprav. Token vygenerovaný počas relácie úprav sa nikdy nezachová v modeli stránky a vypne sa pomocou tokenu času behu, ktorý v poli permissions obsahuje hodnotu NULL.

Dáta

Časť inštancie obsahujúca dáta je reťazec kódovaný pomocou formátu Base64 JSON. Nižšie je uvedená štruktúra reťazca JSON:

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
Názov poľa Popis

instanceid

Jednoznačný identifikátor komponentu pre nájomcu služby Oracle Content Management.

signdate

Dátum generovania podpisu.

sitedomain

Názov domény inštancie služby Oracle Content Management.

permissions

Množina povolení člena lokality. V režime úprav má hodnotu "SITE_OWNER". V ostatných režimoch neobsahuje žiadnu hodnotu.

entitlements

Zoznam prémiových funkcií zakúpených vlastníkom lokality.

Podpis

Časť inštancie vzdialeného komponentu obsahujúca dáta sa serializuje pred podpisom pomocou tajného kľúča APP_SECRET_KEY. Tento utajený kľúč sa musí vygenerovať a ukázať vývojárovi pri registrácii komponentu. Podpis sa vypočíta generovaním hašu dátovej časti inštancie komponentu (serializovaná štruktúra JSON) s tajným kľúčom, a to takto:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

Algoritmus hašu použitý na generovanie podpisu je SHA256. Token bude predstavovať zreťazenie serializovanej štruktúry JSON a vygenerovaného komponentu podpisu, ako je uvedené nižšie:

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