Aller au contenu principal

Manifeste d’application personnalisée

Identifiant du schéma : custom-app-manifest@1 Schéma lisible par machine : custom-app-manifest.schema.json

La description canonique d’une application React personnalisée (section 6.3) : le remote Module Federation que le Shell de la plateforme charge pour une application écrite à la main dans un environnement. Un manifeste est validé de manière identique, qu’il soit enregistré depuis le Centre de contrôle d’administration, soumis par un appel d’API direct, généré par un assistant IA ou transporté dans une importation de solution — la règle du chemin de validation unique (section 6.7).

Structure​

ChampTypeObligatoireRemarques
logicalNamestringouiPréfixé par l’éditeur, en snake-case minuscule (p. ex. par_sales_dashboard). Sert d’identifiant stable de l’artefact — l’audience de son App Context Token.
displayNamestringouiNom lisible affiché sur la page d’accueil du Shell.
descriptionstring | nullnonBrève description affichée sur la vignette de l’application.
entryFileNamestringnonLe fichier d’entrée du conteneur dans le package (p. ex. remoteEntry.js), recopié depuis le manifeste de l’archive. Vide en mode Hébergé, qui n’a pas de package.
packageHashstring | nullnonSHA-256 en hexadécimal minuscule de l’archive à partir de laquelle l’application a été enregistrée. Null en mode Hébergé. À l’importation d’une solution, il est comparé aux octets transportés dans le package, afin que ce qui est servi soit bien ce qui a été exporté.
remoteEntryUrlstringouiSoit une URL http(s) absolue du remoteEntry.js du remote (mode Hébergé — son origine doit figurer dans la liste d’autorisation du Shell pour l’environnement, section 6.3), soit une référence webresource:<logicalName> (mode Packagé, section 6.15) — le bundle est stocké sous forme de ressources web et servi par la plateforme ; le Shell la résout en URL de service de la plateforme et la traite comme interne.
scopestringouiLe nom de scope global du conteneur Module Federation (unique par remote), correspondant au federation({ name }) du remote.
modulestringouiLe chemin du module exposé que charge le Shell (p. ex. ./App). Doit commencer par ./.
requestedScopesstring[]ouiLes portées dont l’application déclare avoir besoin ; demandées lors de l’émission de son App Context Token et intersectées avec celles de l’utilisateur. Peut être vide.
declaredEntitiesstring[]ouiLes tables auxquelles l’application déclare accéder, pour la revue et la validation des dépendances. Peut être vide.

Où il est validé​

  • Enregistrement — l’Application Layer valide le manifeste selon custom-app-manifest@1 et exige que logicalName commence par le préfixe de l’éditeur propriétaire avant d’enregistrer l’application dans un environnement.
  • Importation de solution — chaque manifeste intégré à un package de solution est validé à nouveau selon le même schéma avant que l’application ne soit enregistrée dans l’environnement cible, afin qu’un package modifié à la main ne puisse pas faire passer un remote invalide.

Remarques de sécurité​

Une application React personnalisée s’exécute dans le même realm JavaScript que le Shell (Module Federation, pas une iframe — section 6.3) ; la frontière de confiance est donc appliquée ailleurs : l’origine de remoteEntryUrl doit être autorisée pour l’environnement (CSP), l’application n’est chargeable que si une solution l’a déployée dans cet environnement, et chaque appel de données qu’elle effectue via le Runtime SDK est autorisé côté serveur en fonction des portées de son App Context Token. Déclarer une portée dans requestedScopes ne l’accorde jamais — elle est intersectée avec ce que l’utilisateur détient déjà.

Voir aussi​

  • Référence du Runtime SDK (comment une application personnalisée consomme useParswareRuntime()).
  • Package de solution — transporte ces manifestes d’un environnement à l’autre dans son tableau customApps.