Benutzerdefinierten Konnektor für Microsoft Entra ID-geschützte Azure-Funktions-Apps erstellen
Ein Schlüsselprinzip bei Microsoft Power Apps-Konnektoren, die Microsoft Entra ID zur Authentifizierung verwenden, besteht darin, dass sie den Benutzenden keinen Zugriff auf Daten gewähren, auf die der Benutzende nicht bereits Zugriff hat. Der Grund hierfür ist, dass der API-Aufruf des mit Microsoft Entra ID geschützten Diensts mit der zur Anmeldung beim Konnektor verwendeten Benutzeridentität ausgeführt wird. Daher ist der Zieldienst weiterhin für die Erzwingung der Berechtigungen des authentifizierten Benutzers verantwortlich.
Dieses Tutorial zeigt Ihnen, wie Sie Azure Funktionen verwenden, um eine REST-API zu erstellen, die Microsoft Entra ID-Authentifizierung zu aktivieren und sie dann Power Apps als benutzerdefinierten Konnektor zur Verfügung zu stellen.
Azure-Funktions-Apps mit Visual Studio Code erstellen
Bei den Azure-Funktionen müssen Sie viele Optionen berücksichtigen, darunter Hosting-Optionen, Sprachauswahl und Authoring-Optionen wie die Verwendung von Azure-Portal, Visual Studio Code oder Visual Studio. Für dieses Tutorial werden wir C# und Visual Studio Code verwenden. Um dieses Tutorial abzuschließen, müssen Sie zuerst den Schnellstart: Eine C#-Funktion in Azure mit Visual Studio Code erstellen abschließen. Notieren Sie sich den Namen, den Sie im Schritt Funktions-App in Azure erstellen für Ihre Funktions-App angegeben haben.
Wichtig
Überspringen Sie den Abschnitt Bereinigen der Ressourcen im Schnellstart. Sie benötigen alle erstellten Ressourcen für dieses Tutorial.
Schützen von Azure-Funktions-Apps durch Verwendung von Microsoft Entra ID
Suchen Sie im Azure-Portal nach Ihrer Funktions-App. Wählen Sie den Namen Ihrer Funktions-App in der Liste aus.
Wählen Sie die Registerkarte Plattformfunktionen aus.
Wählen Sie aus der Gruppe Netzwerk den Link Authentifizierung/Autorisierung aus.
Auf dem Blatt Authentifizierung/Autorisierung, aktivieren Sie den Umschalter App-Service-Authentifizierung.
In der Dropdown-Liste Die auszuführende Aktion, wenn die Anforderung nicht authentifiziert ist ändern Sie den Wert in Mit Azure Active Directory anmelden. Diese Einstellung stellt sicher, dass anonyme Anforderungen an die API nicht zugelassen werden.
Als nächstes wählen Sie in der Liste der Authentifizierungsanbieter Azure Active Directory.
Setzen Sie auf dem Blatt Azure Active Directory-Einstellungen die Option Verwaltungsmodus auf Express. Legen Sie die zweite Option unter Verwaltungsmodus auf Neue AD-App erstellen fest.
Wichtig
Kopieren Sie den Wert im Feld App erstellen, und speichern Sie ihn zur späteren Verwendung, bevor Sie fortfahren. Dieser Wert steht für den Namen der Microsoft Entra ID-Anwendung, die Sie zum Schützen der API verwenden. Sie verwenden diesen Wert später beim Konfigurieren des benutzerdefinierten Connectors.
Wählen Sie OK, um Ihre Auswahl zu bestätigen.
Wählen Sie zurück auf dem Blatt Authentifizierung/Autorisierung die Option Speichern aus, um die Authentifizierungs- und Autorisierungseinstellungen der Funktions-App zu aktualisieren.
Wählen Sie nach dem Speichern Azure Active Directory im Abschnitt Authentifizierungsanbieter.
Wählen Sie die Azure AD-App, und kopieren Sie dann den Wert Client-ID, und fügen Sie ihn irgendwo zur späteren Verwendung ein.
Vergewissern Sie sich, dass die API korrekt geschützt ist, indem Sie ein neues Browserfenster im privaten Modus öffnen und zur API navigieren. Die URL für Ihre Funktions-App finden Sie im Abschnitt Übersicht auf dem Blatt der Funktions-App. Wenn die Authentifizierungseinstellungen korrekt angewendet wurden, sollten Sie auf die Anmeldeseite für Microsoft Entra ID umgeleitet werden.
Erstellen eines benutzerdefinierten Connectors für Ihre Azure-Funktions-App
Zum Erstellen eines benutzerdefinierten Konnektors, der die Microsoft Entra ID-Authentifizierung verwendet, müssen Sie eine Microsoft Entra ID-App-Registrierung erstellen, um den benutzerdefinierten Konnektor zu schützen, und delegierten Zugriff auf die durch die Microsoft Entra ID-App-Registrierung geschützte Azure-Funktions-App abzurufen, die im Abschnitt Schützen von Azure-Funktions-Apps mit Microsoft Entra ID erstellen.
Erstellen einer App-Registrierung für Ihren benutzerdefinierten Konnektor in Microsoft Entra ID
Erstellen Sie zunächst eine Microsoft Entra ID-Anwendung für Ihren benutzerdefinierten Konnektor. Dies ist erforderlich, um dem benutzerdefinierten Connector die Berechtigung zum Anrufen Ihrer Azure-Funktions-App zu erteilen.
Navigieren Sie im Azure-Portal zur Seite App-Registrierungen.
Wählen Sie in der Liste der registrierten Anwendungen die Option Neue Registrierung aus.
Geben Sie einen Namen für Ihre Anwendung ein, wählen Sie die unterstützten Kontotypen und Plattformkonfigurationen (optional) aus, und wählen Sie dann Registrieren aus.
Hinweis
Um mehr über die App-Registrierungsoptionen zu erfahren, gehen Sie zu Schnellstart: Eine Anwendung bei der Microsoft Identity Platform registrieren.
Nachdem Sie Registrieren ausgewählt haben, werden API-Berechtigungen für Ihre App-Registrierung angezeigt.
Wählen Sie Berechtigung hinzufügen aus.
Wählen Sie die Registerkarte Von meiner Organisation verwendete APIs aus, und suchen Sie dann nach dem Namen der App aus Schritt 7 des Abschnitts Schützen von Azure-Funktions-Apps mit Microsoft Entra ID. Wählen Sie den Namen der App aus, wenn Sie ihn gefunden haben.
Wichtig
Ihr App-Name unterscheidet sich von dem im Screenshot.
Aktivieren Sie das Kontrollkästchen user_impersonation, und wählen Sie dann Berechtigungen hinzufügen aus.
Hinweis
Weitere Informationen zu Berechtigungen finden Sie unter Berechtigungen und Zustimmung im Microsoft Identity Platform-Endpunkt.
Wählen Sie Zertifikate und Geheimnisse und dann Neuer geheimer Clientschlüssel aus.
Geben Sie eine Beschreibung für Ihr Geheimnis ein, wählen Sie ein Ablaufdatum aus, und klicken Sie dann auf Hinzufügen.
Ihr neues Geheimnis wird angezeigt. Kopieren Sie den Wert, und speichern Sie ihn. Sie werden ihn später benötigen.
Wählen Sie Übersicht aus, und kopieren Sie dann den Wert der Anwendungs-ID (Client), und speichern Sie ihn. Sie werden ihn später benötigen.
Lassen Sie diese Seite geöffnet. Es gibt noch einen weiteren Schritt im Azure-Portal, aber zuerst erstellen Sie einen benutzerdefinierten Konnektor.
Einen benutzerdefinierten Connector erstellen
Nun, da die Microsoft Entra ID-Anwendung konfiguriert ist, erstellen Sie den benutzerdefinierten Konnektor. Um einen benutzerdefinierten Konnektor zu erstellen, müssen Sie die API beschreiben, mit der Sie eine Verbindung herstellen möchten, damit der Konnektor die Operationen und Datenstrukturen der API versteht. Die Erstellung von Azure-Funktions-Apps für benutzerdefinierte Konnektoren erfordert oft, dass Sie Ihren Konnektor durch Wiederholen der folgenden Schritte iterativ erstellen:
- Erstellen, testen und debuggen Sie die Azure-Funktions-App lokal mit Visual Studio Code.
- Stellen Sie die Funktions-App in Azure bereit.
- Aktualisieren Sie die Konfiguration des benutzerdefinierten Connectors, um Änderungen an Ihrer Funktions-App widerzuspiegeln.
Postman ist ein beliebtes Tool zum Testen von Web-APIs. Es wird häufig verwendet, um Azure-Funktions-Apps zu testen. In diesem Artikel erstellen Sie einen benutzerdefinierten Konnektor auf der Grundlage einer Postman-Sammlung. Die Postman-Sammlung wird für Sie bereitgestellt.
Hinweis
Weitere Informationen zum Erstellen einer eigenen Postman-Sammlung finden Sie im Thema Eine Postman-Sammlung für einen benutzerdefinierten Konnektor erstellen. Die Verwendung von Postman ist nur eine Option zum Erstellen eines benutzerdefinierten Connectors. Wechseln Sie zum Thema API beschreiben und benutzerdefinierten Konnektor definieren, um mehr zu anderen zu erfahren.
In einer neuen Browser-Registerkarte melden Sie sich bei Power Apps oder Power Automate an.
Kopieren Sie den folgenden Code. Erstellen Sie mit Ihrem bevorzugten Text-Editor eine neue Datei, und fügen Sie den Code als Inhalt der Datei ein. Speichern Sie die Datei. Sie können einen beliebigen Namen für die Datei verwenden (z. B. tutorial-custom-connector.json). Denken Sie aber daran, sich den Namen zu merken. Sie benötigen diese Datei in den nächsten Schritten.
{ "id": "c4b5deba-f97b-47d0-82a5-a2b32561fb01", "name": "Custom Connector", "description": null, "auth": null, "events": null, "variables": [], "order": [ "374365a1-ede5-4ead-8068-d878085dad26" ], "folders_order": [], "protocolProfileBehavior": {}, "folders": [], "requests": [ { "id": "374365a1-ede5-4ead-8068-d878085dad26", "name": "Hello", "url": "http://localhost:7071/api/Hello", "description": "", "data": [], "dataOptions": { "raw": { "language": "json" } }, "dataMode": "raw", "headerData": [ { "key": "Content-Type", "name": "Content-Type", "value": "application/json", "description": "", "type": "text" } ], "method": "POST", "pathVariableData": [], "queryParams": [], "auth": null, "events": null, "folder": null, "responses": [ { "id": "46baba58-7b85-4a2e-8c7d-303080e08ba9", "name": "Hello", "status": null, "mime": null, "language": "plain", "text": "Hello, Marc. This HTTP triggered function executed successfully.", "responseCode": { "code": 200, "name": "OK" }, "requestObject": { "data": [], "dataMode": "raw", "dataOptions": { "raw": { "language": "json" } }, "headerData": [ { "key": "Content-Type", "name": "Content-Type", "value": "application/json", "description": "", "type": "text" } ], "method": "POST", "pathVariableData": [], "queryParams": [], "url": "http://localhost:7071/api/Hello", "rawModeData": "{\n\t\"name\": \"Marc\"\n}" }, "headers": [ { "key": "Date", "value": "Wed, 04 Mar 2020 22:32:06 GMT" }, { "key": "Content-Type", "value": "text/plain; charset=utf-8" }, { "key": "Server", "value": "Kestrel" }, { "key": "Transfer-Encoding", "value": "chunked" } ], "cookies": null, "request": "374365a1-ede5-4ead-8068-d878085dad26", "collection": "c4b5deba-f97b-47d0-82a5-a2b32561fb01" } ], "rawModeData": "{\n\t\"name\": \"Marc\"\n}", "headers": "Content-Type: application/json\n", "pathVariables": {} } ] }
Erweitern Sie im linken Bereich Daten, und wählen Sie dann Benutzerdefinierte Connectors aus.
Wählen Sie in der oberen rechten Ecke Neuer benutzerdefinierter Connector und dann Postman-Sammlung importieren aus.
Geben Sie einen Namen für den Connector ein, wählen Sie Importieren aus, navigieren Sie zu der Datei, die Sie in Schritt 2 erstellt haben, und wählen Sie dann Weiter aus.
Die Seite Allgemein wird geöffnet. Ändern Sie das Schema in HTTPS, ersetzen Sie den Wert von Host durch die Domäne ihrer Funktions-App, und fahren Sie dann mit der Seite Sicherheit des Assistenten fort.
Geben Sie auf der Seite Sicherheit Microsoft Entra ID-Informationen für die Anwendung an:
Geben Sie für Client-ID den Wert Anwendungs-ID (Client) ein, den Sie im Abschnitt Erstellen einer App-Registrierung für Ihren benutzerdefinierten Konnektor in Microsoft Entra ID in Schritt 11 kopiert haben.
Geben Sie für Clientgeheimnis den Wert Geheimnis ein, das Sie im Abschnitt Erstellen einer App-Registrierung für Ihren benutzerdefinierten Konnektor in Microsoft Entra ID in Schritt 11 kopiert haben.
Geben Sie für Ressourcen-URLdie URL Ihrer Funktions-App ein. Es wird im Format
https://[function-app-name].azurewebsites.net
sein.
Nachdem Sie die Sicherheitsinformationen eingegeben haben, wählen Sie Connector aktualisieren aus, um den benutzerdefinierten Connector zu erstellen.
Auf der Seite Sicherheit ist das Feld Redirect-URL jetzt ausgefüllt. Kopieren Sie diese URL, weil Sie sie im nächsten Abschnitt dieses Tutorials verwenden können.
Hinweis
Sie müssen möglicherweise nach unten scrollen, um die Umleitungs-URL zu sehen.
Kehren Sie auf einer anderen Browserregisterkarte zu der App-Registrierung zurück, die Sie im Abschnitt Erstellen einer App-Registrierung für Ihren benutzerdefinierten Connector in Microsoft Entra ID erstellt haben. Vergewissern Sie sich, dass Sie sich im Abschnitt Übersicht befinden, und wählen Sie dann Umleitungs-URI hinzufügen aus.
Wählen Sie Plattform hinzufügen aus.
Wählen Sie im Bereich Plattformen konfigurieren die Option Web aus.
Fügen Sie im Bereich Web konfigurieren den Wert der Umleitungs-URL aus Schritt 7 ein, und wählen Sie dann Konfigurieren aus.
Kehren Sie zur Browserregisterkarte mit der Konfiguration des benutzerdefinierten Connectors zurück. Es sollte noch immer die Seite Sicherheit des Assistenten geöffnet sein.
Wählen Sie das Wort Definition aus, um mit der Seite Definition des Assistenten fortzufahren, und überprüfen Sie die Angaben.
Hinweis
Die Definition stammt aus der Postman-Sammlung, die Sie importiert haben. Wenn Sie den Code in Schnellstart: Eine C#-Funktion in Azure mit Visual Studio Code erstellen geändert haben, stimmt die Importdatei möglicherweise nicht mit der Form Ihrer API überein. Sie müssen entweder eine neue Postman-Sammlung erstellen oder die Aktion manuell im benutzerdefinierten Connector anpassen. Informationen zum Erstellen einer neuen Postman-Sammlung finden Sie hier unter den Links weiter oben in diesem Tutorial. Informationen zum manuellen Anpassen der Aktion finden Sie im Tutorial Erstellen eines benutzerdefinierten Connectors ohne Vorlage im Abschnitt unter Erstellen der Connectordefinition.
Connector testen
Nun, da Sie den Konnektor erstellt haben, testen Sie ihn, um sicherzustellen, dass er ordnungsgemäß funktioniert. Tests sind derzeit nur in Power Automate und Power Apps verfügbar.
Wählen Sie Test aus, um mit der Seite Test des Assistenten fortzufahren.
Wählen Sie auf der Seite Test die Option Neue Verbindung aus.
Wählen Sie Erstellen aus, und melden Sie sich dann mit Ihrem Microsoft Entra ID-Benutzenden an.
Gehen Sie zur Seite Test und führen Sie einen der folgenden Schritte aus:
Unter Power Automate gelangen Sie zurück zur Seite Test. Wählen Sie das Aktualisierungssymbol, um sicherzustellen, dass die Verbindungsinformationen aktualisiert werden.
Unter Power Apps gelangen Sie zu der Liste der in der aktuellen Umgebung verfügbaren Verbindungen. Wählen Sie im linken Bereich Benutzerdefinierte Connectors aus. Suchen Sie nach Ihrem benutzerdefinierten Connector, und wählen Sie dann das Bearbeitungssymbol aus.
Kehren Sie zur Seite Test zurück, geben Sie einen Wert in das Feld Name ein, und wählen Sie dann Vorgang testen aus.
Überprüfen Sie die Anforderung und die Antwort.
Nächste Schritte,
Nun, da Sie einen benutzerdefinierten Konnektor erstellt und sein Verhalten definiert haben, können Sie den Konnektor verwenden.
- Einen benutzerdefinierten Connector in einem Flow verwenden
- Benutzen Sie einen benutzerdefinierten Konnektor aus einer Anwendung
- Einen benutzerdefinierten Connector aus einer Logik-App verwenden
Feedback senden
Wir freuen uns sehr über Feedback zu Problemen mit unserer Connector-Plattform oder neuen Feature-Ideen. Wenn Sie Feedback geben möchten, gehen Sie zu Probleme melden oder Hilfe zu Connectors und wählen Sie einen Feedbacktyp aus.