Sikkerhed for eksterne komponenter

Med Oracle Content Management kan tredjepartsudviklere integrere deres tilpassede komponenter i Oracle Content Management-platformen, men samtidig opbevare dem på en ekstern server.

De eksterne komponenter skal hver især have registrerede indstillinger og gengivelsesslutpunkter i Oracle Content Management. Ud over slutpunktet skal udviklere også levere en hemmelig nøgle, der er entydig for den registrerede komponent.

Oracle Content Management kalder registrerede komponenters slutpunkter for at realisere indholdet af en siteside. Da disse slutpunkter er synlige på det offentlige internet, skal udviklere verificere, at slutpunkterne for en registreret ekstern komponent bliver kaldt fra Oracle Content Management. For at verificere ægtheden af opkalderen leveres et signeret token til de registrerede slutpunkter for en URL. Opkalderen autentificeres via verificering af den digitale signatur, som er integreret i det signerede token, med den hemmelige nøgle til den eksterne komponent, som blev leveret under registreringsprocessen.

Formatet af tokenet er:

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

Her følger et eksempeltoken, der videregives til de registrerede appslutpunkter:

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

Tokenet består af to separate dele: data og signatur, der er adskilt af separatoren '.'

Som generel retningslinje bør udviklere altid autentificere tokenet i redigerings- eller eksempeltilstand, før de giver adgang til de registrerede slutpunkter for en komponent. Desuden bør udviklere, når de autentificerer opkalderen i slutpunktindstillinger, altid huske at se efter en SITE_OWNER-værdi i feltet Tilladelser for tokenet. I feltet Tilladelser for tokenet vises værdien af SITE_OWNER kun i redigeringstilstand. Et token, der genereres under en redigeringssession, persisteres aldrig tilbage til sidemodellen og udskiftes med et runtime-token, som har en NULL-værdi i feltet Tilladelser.

Data

Datadelen af instansen er en Base64 JSON-kodet streng. Her er JSON-strengens struktur:

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
Feltnavn Beskrivelse

instanceid

Entydig identifikator for en komponent til en Oracle Content Management-lejer.

signdate

Dato for signaturgenerering.

sitedomain

Oracle Content Management-instansens domænenavn.

permissions

Tilladelsessæt for sitemedlemmet. I redigeringstilstand har det værdien "SITE_OWNER". Ellers har det ingen værdi.

entitlements

Liste over premium-funktioner, der er købt af siteejeren.

Signatur

Datadelen af den eksterne komponentinstans serialiseres, før den signeres af en APP_SECRET_KEY. Den hemmelige nøgle skal genereres og vises til udvikleren under registrering af komponenten. Signaturen beregnes, ved at der genereres en hash-værdi for datadelen af komponentinstansen (en serialiseret JSON-struktur) med den hemmelige nøgle som vist her:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

Den hash-algoritme, der bruges til generering af signaturen, er SHA256. Tokenet bliver dermed sammensætningen af den serialiserede JSON-struktur og den genererede signaturkomponent som vist her:

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