Veröffentlichen von Power Apps Code-Apps mit einem Dienstprinzipal

Verwenden Sie einen Microsoft Entra Dienstprinzipal, um die Power Apps CLI zu authentifizieren, ohne einen Browser zu öffnen oder ein zwischengespeichertes Benutzerkonto zu verwenden. Diese Authentifizierungsmethode ist nützlich für Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) sowie für andere automatisierte Prozesse, die Updates für eine vorhandene Code-App bereitstellen.

Zum Veröffentlichen eines Updates benötigt der Dienstprinzipal Zugriff auf die Power Platform-Zielumgebung und den Bearbeitungszugriff auf die Code-App. Berechtigungen auf Umgebungsebene erteilen keine Berechtigung zum Aktualisieren einer vorhandenen App. Die App-Freigabe und die Dienstprinzipalauthentifizierung sind separate Features, die Freigabe der App ist jedoch eine Voraussetzung für die Veröffentlichung von Updates als Dienstprinzipal.

Important

Ein App-Hersteller muss die App mit dem Dienstprinzipal teilen, bevor der Dienstprinzipal das erste Update veröffentlicht. Die Freigabe ist eine einmalige Voraussetzung, nicht Teil des wiederkehrenden Veröffentlichungsprozesses. Ein Dienstprinzipal kann sich nicht selbst Zugriff gewähren.

Voraussetzungen

  • Eine Power Apps Code-App, die Sie bereits veröffentlicht haben

  • Ein App-Maker-Konto, das über die Berechtigung zum Freigeben der App verfügt

  • Ein Microsoft Entra Dienstprinzipal, der Zugriff auf die Power Platform-Zielumgebung hat

  • Diese Dienstprinzipalwerte:

    • Anwendungs-ID (Client-ID)
    • Geheimer Clientschlüssel
    • Verzeichnis-ID (Mandant)
    • Unternehmensanwendungsobjekt-ID

Grundlegendes zu den Dienstprinzipalbezeichnern

Microsoft Entra ID stellt mehrere Kennungen für eine App-Registrierung und ihren Dienstprinzipal bereit. Verwenden Sie den richtigen Bezeichner für jeden Vorgang.

Kennung Wo finde ich sie? Wie diese verwendet wird
Anwendungs-ID (Client-ID) App-Registrierungen Legen Sie die Umgebungsvariable PA_CLI_SP_CLIENT_ID fest.
Verzeichnis-ID (Mandant) App-Registrierungen Legen Sie die Umgebungsvariable PA_CLI_SP_TENANT_ID fest.
Unternehmensanwendungsobjekt-ID Unternehmensanwendungen Weitergeben an pa app share --principal.

Voraussetzung: Geben Sie die App für das Dienstprinzipalobjekt frei

Wenn die App bereits Bearbeitungszugriff für den Dienstprinzipal hat, überspringen Sie diesen Abschnitt. Führen Sie andernfalls einmal vom Computer des App-Herstellers diese Schritte aus. Fügen Sie den Befehl zum Freigeben nicht in die CI/CD-Pipeline ein.

Important

Verwenden Sie die in App-Registrierungen im Microsoft Entra Admin Center angezeigte Objekt-ID nicht, in der Sie die Anwendungs-ID (Client-ID), die Verzeichnis-ID (Mandant) und den geheimen Clientschlüssel finden. Verwenden Sie stattdessen die in Enterprise-Anwendungen angezeigte Objekt-ID.

Wenn Sie die Anwendungs-ID (Client-ID) kennen, rufen Sie alternativ die Objekt-ID der Enterprise-Anwendung mithilfe des Befehls Azure CLI az ad sp showab:

az ad sp show --id <application-client-id> --query id --output tsv

Melden Sie sich als App-Maker an, und geben Sie die Code-App frei.

Aktivieren Sie die Dienstprinzipalauthentifizierung beim Freigeben der App nicht.

Melden Sie sich mit dem pa auth login Befehl interaktiv mit dem App Maker-Konto an:

pa auth login --account <maker-email>

Vergewissern Sie sich, dass das App Maker-Konto mit dem pa auth status Befehl aktiv ist:

pa auth status

Gewähren Sie im App-Ordner dem Dienstprinzipal mit dem pa app share BefehlBearbeitungszugriff:

pa app share --principal <enterprise-application-object-id> --access edit

Die edit Zugriffsebene gewährt dem Dienstprinzipal die Berechtigung, die App mithilfe des pa app push Befehls zu aktualisieren.

Um die Berechtigung zum Wiedergeben der App zu erteilen, ohne sie zu aktualisieren, verwenden Sie --access play:

pa app share --principal <enterprise-application-object-id> --access play

Updates als Dienstprinzipal veröffentlichen

Nachdem die App über Bearbeitungszugriff auf den Dienstprinzipal verfügt, verwenden Sie den Dienstprinzipal, um Updates von einer CI/CD-Pipeline oder von einem lokalen Computer aus zu veröffentlichen. Wiederholen Sie dieses Verfahren für jede Aktualisierung. Sie müssen die App nur dann erneut teilen, wenn dem Dienstprinzipal der Zugriff entzogen wird.

Konfigurieren der Dienstprinzipalauthentifizierung

Setzen Sie die Umgebungsvariablen für die Dienstprinzipal-Authentifizierung im CI/CD-Job oder in der Terminalsitzung, die Sie zum Veröffentlichen des Updates verwenden. Diese Variablen bewirken, dass sich die CLI mit dem Dienstprinzipal authentifiziert, anstatt ein zwischengespeichertes Konto für die interaktive Anmeldung zu verwenden.

$env:PA_CLI_USE_SP_AUTH = "true"
$env:PA_CLI_SP_CLIENT_ID = "<application-client-id>"
$env:PA_CLI_SP_CLIENT_SECRET = "<client-secret>"
$env:PA_CLI_SP_TENANT_ID = "<tenant-id>"

Nachdem Sie die Variablen festgelegt haben, führen Sie den Build- und Veröffentlichungsbefehl aus dieser Terminalsitzung oder dem CI/CD-Auftrag aus.

Erstellen und Veröffentlichen des Updates

Erstellen Sie die App mithilfe des für Ihr Projekt konfigurierten Befehls. Beispiel:

npm run build

Veröffentlichen der kompilierten App im nichtinteraktiven Modus mithilfe des pa app push Befehls

pa app push --non-interactive

Die CLI verwendet die Anmeldeinformationen des Dienstprinzipals aus den Umgebungsvariablen und öffnet weder einen Browser noch verwendet sie zwischengespeicherte interaktive Anmeldeinformationen.

Nach Abschluss des Befehls gibt ein Exitcode 0 an, dass das Update veröffentlicht wurde. Ein Exitcode ungleich null weist darauf hin, dass der Befehl fehlgeschlagen ist.