Direkt zum Hauptinhalt

Manifest einer benutzerdefinierten App

Schema-ID: custom-app-manifest@1 Maschinenlesbares Schema: custom-app-manifest.schema.json

Die maßgebliche Beschreibung einer benutzerdefinierten React-App (Abschnitt 6.3): das Module-Federation-Remote, das die Plattform-Shell für eine handgeschriebene App in einer Umgebung lädt. Ein Manifest wird identisch validiert, ob es über das Admin Control Center registriert, per direktem API-Aufruf übermittelt, von einem KI-Assistenten generiert oder in einem Lösungsimport mitgeliefert wird – die Regel des einen Validierungspfads (Abschnitt 6.7).

Aufbau​

FeldTypPflichtHinweise
logicalNamestringjaMit Herausgeberpräfix, Snake-Case in Kleinbuchstaben (z. B. par_sales_dashboard). Dient als stabile Artefakt-ID der App – die Zielgruppe (audience) ihres App Context Tokens.
displayNamestringjaLesbarer Name, der auf der Startseite der Shell angezeigt wird.
descriptionstring | nullneinKurzbeschreibung, die auf der Kachel der App angezeigt wird.
entryFileNamestringneinDie Einstiegsdatei des Containers im Paket (z. B. remoteEntry.js), aus dem eigenen Manifest des Archivs übernommen. Leer im Hosted-Modus, der kein Paket hat.
packageHashstring | nullneinSHA-256 in Kleinbuchstaben-Hex des Archivs, aus dem diese App registriert wurde. Null im Hosted-Modus. Beim Lösungsimport wird er gegen die Bytes geprüft, die im Paket mitgereist sind, sodass ausgeliefert wird, was exportiert wurde.
remoteEntryUrlstringjaEntweder eine absolute http(s)-URL der remoteEntry.js des Remotes (Hosted-Modus – ihr Ursprung muss auf der Shell-Positivliste der Umgebung stehen, Abschnitt 6.3) oder ein Verweis webresource:<logicalName> (Paketmodus, Abschnitt 6.15) – das Bundle ist als Webressourcen gespeichert und wird von der Plattform ausgeliefert; die Shell löst den Verweis zu einer Auslieferungs-URL der Plattform auf und behandelt ihn als eigenen Inhalt (First-Party).
scopestringjaDer globale Scope-Name des Module-Federation-Containers (eindeutig pro Remote), entsprechend federation({ name }) des Remotes.
modulestringjaDer Pfad des bereitgestellten Moduls, das die Shell lädt (z. B. ./App). Muss mit ./ beginnen.
requestedScopesstring[]jaScopes, die die App als benötigt deklariert; sie werden beim Ausstellen ihres App Context Tokens angefordert und mit den eigenen Berechtigungen des Benutzers geschnitten. Darf leer sein.
declaredEntitiesstring[]jaTabellen, auf die die App nach eigener Angabe zugreift – zur Prüfung und zur Validierung von Abhängigkeiten. Darf leer sein.

Wo es validiert wird​

  • Registrierung – der Application Layer validiert das Manifest gegen custom-app-manifest@1 und stellt sicher, dass logicalName mit dem Präfix des besitzenden Herausgebers beginnt, bevor er die App in einer Umgebung erfasst.
  • Lösungsimport – jedes in einem Lösungspaket eingebettete Manifest wird gegen dasselbe Schema erneut validiert, bevor die App in der Zielumgebung registriert wird, sodass ein von Hand bearbeitetes Paket kein ungültiges Remote einschleusen kann.

Sicherheitshinweise​

Eine benutzerdefinierte React-App läuft im selben JavaScript-Realm wie die Shell (Module Federation, kein iframe – Abschnitt 6.3), daher wird die Vertrauensgrenze an anderer Stelle durchgesetzt: Der Ursprung von remoteEntryUrl muss für die Umgebung auf der Positivliste stehen (CSP), die App ist nur ladbar, wenn eine Lösung sie in diese Umgebung bereitgestellt hat, und jeder Datenaufruf, den sie über das Runtime SDK tätigt, wird serverseitig gegen die Scopes ihres App Context Tokens autorisiert. Einen Scope in requestedScopes zu deklarieren, gewährt ihn niemals – er wird mit dem geschnitten, was der Benutzer bereits besitzt.

Verwandt​

  • Referenz des Runtime SDK (wie eine benutzerdefinierte App useParswareRuntime() nutzt).
  • Lösungspaket – transportiert diese Manifeste in seinem Array customApps zwischen Umgebungen.