Sicherheit für Remotekomponenten

Mit Oracle Content Management können externe Entwickler ihre benutzerdefinierten Komponenten in die Oracle Content Management-Plattform integrieren, müssen sie aber auf einem Remoteserver speichern.

Jede Remotekomponente muss über registrierte Einstellungen und Renderingendpunkte bei Oracle Content Management verfügen. Zusätzlich zu Endpunkten müssen Entwickler einen für die registrierte Komponente eindeutigen Secret Key angeben.

Oracle Content Management ruft die Endpunkte der registrierten Komponente auf, um den Inhalt auf einer Siteseite anzuzeigen. Da diese Endpunkte für das öffentliche Internet zugänglich sind, müssen Entwickler sicherstellen, dass die Endpunkte einer registrierten Remotekomponente von Oracle Content Management aufgerufen werden. Um die Authentizität des Aufrufers zu prüfen, wird ein signiertes Token an die registrierten Endpunkte einer URL übermittelt. Die aufrufende Partei wird authentifiziert, indem die in das signierte Token eingebettete digitale Signatur mit dem Secret Key der Remotekomponente geprüft wird, der bei der Registrierung angegeben wurde.

Format des Tokens:

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

Beispieltoken, das an die registrierten App-Endpunkte übergeben wird:

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

Das Token besteht aus zwei Teilen: Daten und Signatur. Diese sind durch einen Punkt (.) getrennt.

Entwickler sollten im Allgemeinen immer das Token im Bearbeitungs- oder Vorschaumodus authentifizieren, bevor sie Zugriff auf registrierte Endpunkte einer Komponente erteilen. Darüber hinaus sollten sie beim Authentifizieren der aufrufenden Partei im Einstellungsendpunkt immer nach einem SITE_OWNER-Wert im permissions-Feld des Tokens suchen. Daspermissions-Feld des Tokens zeigt den SITE_OWNER-Wert nur im Bearbeitungsmodus an. Ein während einer Bearbeitungssession generiertes Token wird nie zurück an das Seitenmodell persistiert und wird durch ein Laufzeittoken mit einem NULL-Wert im permissions-Feld ersetzt.

Daten

Der Datenteil der Instanz ist eine mit Base64 codierte JSON-Zeichenfolge. Struktur der JSON-Zeichenfolge:

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

instanceid

Eindeutige ID einer Komponente für einen Oracle Content Management-Mandanten.

signdate

Datum der Signaturgenerierung.

sitedomain

Domainname der Oracle Content Management-Instanz.

permissions

Berechtigungsset des Sitemitglieds. Im Bearbeitungsmodus hat dies den Wert "SITE_OWNER". Andernfalls enthält das Feld keinen Wert.

entitlements

Liste der vom Siteeigentümer gekauften Premiumfeatures.

Signatur

Der Datenteil der Remotekomponenteninstanz wird serialisiert, bevor er mit einem APP_SECRET_KEY signiert wird. Dieser Secret Key muss beim Registrieren der Komponente generiert und dem Entwickler vorgelegt werden. Die Signatur wird berechnet, indem ein Hash des Datenteils der Komponenteninstanz (eine serialisierte JSON-Struktur) mit dem Secret Key generiert wird, wie hier dargestellt:

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

SHA256 wird als Hash-Algorithmus beim Generieren der Signatur verwendet. Das Token ist dann die Verkettung der serialisierten JSON-Struktur und der generierten Signaturkomponente, wie hier gezeigt:

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