Hinzufügen von Authentifizierung beim Aufrufen benutzerdefinierter APIs in Azure Logic Apps
Um die Sicherheit für Aufrufe Ihrer APIs zu erhöhen, können Sie die Microsoft Entra-Authentifizierung über das Azure-Portal einrichten, sodass Sie Ihren Code nicht aktualisieren müssen. Alternativ können Sie die Authentifizierung über den API-Code anfordern oder erzwingen.
Es gibt folgende Möglichkeiten, Authentifizierung hinzuzufügen:
Keine Änderungen am Code: Schützen Sie Ihre API mit Microsoft Entra ID über das Azure-Portal, damit Sie Ihren Code nicht aktualisieren bzw. Ihre API nicht erneut bereitstellen müssen.
Hinweis
Bei der Microsoft Entra-Authentifizierung, die Sie im Azure-Portal aktivieren, wird standardmäßig keine fein abgestufte Autorisierung durchgeführt. Beispielsweise sperrt diese Authentifizierung Ihre API nur für einen bestimmten Mandanten und nicht für einen bestimmten Benutzer oder eine App.
Aktualisieren Ihres API-Codes: Schützen Sie Ihre API, indem Sie die Zertifikatauthentifizierung, Standardauthentifizierung, oder Microsoft Entra-Authentifizierung über Code erzwingen.
Authentifizieren von Aufrufen Ihrer API ohne Codeänderungen
Im Folgenden sind die allgemeinen Schritte für diese Methode aufgeführt:
Erstellen Sie zwei Microsoft Entra-Anwendungsidentitäten: eine für Ihre Logik-App-Ressource und eine für Ihre Web-App (oder API-App).
Verwenden Sie für die Authentifizierung von Aufrufen Ihrer API die Anmeldeinformationen (Client-ID und Geheimnis) für den Dienstprinzipal, welcher der Microsoft Entra-Anwendungsidentität für Ihre Logik-App zugeordnet ist.
Nehmen Sie die Anwendungs-IDs in die Workflowdefinition der Logik-App auf.
Teil 1: Erstellen einer Microsoft Entra-Anwendungsidentität für die Logik-App
Die Logik-App-Ressource verwendet diese Microsoft Entra-Anwendungsidentität zum Authentifizieren bei Microsoft Entra ID. Sie müssen diese Identität für Ihr Verzeichnis nur einmal einrichten. Sie können z.B. die gleiche Identität für alle Logik-Apps verwenden, Sie können aber auch pro Logik-App eindeutige Identitäten erstellen. Sie können diese Identitäten im Azure-Portal oder über PowerShell einrichten.
Wählen Sie im Azure-Portal die Option Microsoft Entra ID aus.
Vergewissern Sie sich, dass Sie sich in demselben Verzeichnis befinden, in dem auch die Web-App oder die API-App enthalten ist.
Tipp
Klicken Sie auf Ihr Profil, und wählen Sie ein anderes Verzeichnis aus, um zwischen Verzeichnissen zu wechseln. Wählen Sie alternativ Übersicht>Verzeichnis wechseln aus.
Wählen Sie im Verzeichnismenü unter Verwalten die Option App-Registrierungen>Neue Registrierung aus.
In der Liste App-Registrierungen werden alle Registrierungen in Ihrem Verzeichnis angezeigt. Um nur Ihre App-Registrierungen anzuzeigen, wählen Sie Anwendungen mit Besitzer aus.
Geben Sie einen Namen für die Anwendungsidentität Ihrer Logik-App ein, der Benutzern angezeigt wird. Wählen Sie die unterstützten Kontotypen aus. Wählen Sie für Umleitungs-URI die Option Web aus, geben Sie eine eindeutige URL an, an die die Authentifizierungsantwort zurückgegeben werden soll, und wählen Sie Registrieren aus.
Die Liste Anwendungen mit Besitzer enthält jetzt Ihre erstellte Anwendungsidentität. Wenn diese Identität nicht angezeigt wird, wählen Sie auf der Symbolleiste Aktualisieren aus.
Wählen Sie in der Liste der App-Registrierungen Ihre neue Anwendungsidentität aus.
Wählen Sie im Navigationsmenü „Anwendungsidentität“ die Option Übersicht aus.
Kopieren und speichern Sie im Bereich Übersicht unter Grundlegende Informationen die Anwendungs-ID, um sie als Client-ID für Ihre Logik-App in Teil 3 zu verwenden.
Wählen Sie im Navigationsmenü „Anwendungsidentität“ die Option Zertifikate und Geheimnisse aus.
Wählen Sie auf der Registerkarte Geheime Clientschlüssel die Option Neuer geheimer Clientschlüssel aus.
Geben Sie unter Beschreibung einen Namen für Ihr Geheimnis an. Wählen Sie unter Läuft ab eine Dauer für das Geheimnis aus. Wenn Sie fertig sind, wählen Sie Hinzufügen aus.
Das von Ihnen erstellte Geheimnis fungiert als „Geheimnis“ bzw. Kennwort der Anwendungsidentität für die Logik-App.
Im Bereich Zertifikate und Geheimnisse wird unter Geheime Clientschlüssel Ihr Geheimnis nun zusammen mit einem Geheimniswert und einer Geheimnis-ID angezeigt.
Kopieren Sie den Geheimniswert zur späteren Verwendung. Wenn Sie Ihre Logik-App in Teil 3 konfigurieren, geben Sie diesen Wert als „Geheimnis“ oder Kennwort an.
Teil 2: Erstellen einer Microsoft Entra-Anwendungsidentität für die Web-App oder API-App
Wenn Ihre Web-App oder API-App bereits bereitgestellt wurde, können Sie die Authentifizierung aktivieren und die Anwendungsidentität im Azure-Portal erstellen. Andernfalls können Sie die Authentifizierung bei der Bereitstellung mit einer Azure Resource Manager-Vorlage aktivieren.
Erstellen der Anwendungsidentität für eine bereitgestellte Web-App oder API-App im Azure-Portal
Suchen Sie im Azure-Portal Ihre Web-App oder API-App, und wählen Sie sie aus.
Wählen Sie unter Einstellungen die Option Authentifizierung>Identitätsanbieter hinzufügen aus.
Nachdem der Bereich Identitätsanbieter hinzufügen geöffnet wurde, wählen Sie auf der Registerkarte Grundlagen in der Liste Identitätsanbieter die Option Microsoft aus, um Microsoft Entra-Identitäten zu verwenden. Wählen Sie dann Hinzufügen aus.
Erstellen Sie nun wie folgt eine Anwendungsidentität für Ihre Web-App oder API-App:
Wählen Sie unter App-Registrierungstyp die Option Neue App-Registrierung erstellen aus.
Geben Sie unter Name einen Namen für Ihre Anwendungsidentität an.
Wählen Sie unter Unterstützte Kontotypen die Kontotypen aus, die für Ihr Szenario geeignet sind.
Wählen Sie unter Zugriff einschränken die Option Authentifizierung erforderlich aus.
Wählen Sie unter Nicht authentifizierte Anforderungen die Option basierend auf Ihrem Szenario aus.
Wenn Sie fertig sind, wählen Sie Hinzufügen aus.
Die Anwendungsidentität, die Sie gerade für Ihre Web-App oder API-App erstellt haben, wird jetzt im Abschnitt Identitätsanbieter angezeigt:
Tipp
Wenn die Anwendungsidentität nicht angezeigt wird, wählen Sie auf der Symbolleiste Aktualisieren aus.
Jetzt müssen Sie die Anwendungs-ID (Client) und die Mandanten-ID für die Anwendungsidentität suchen, die Sie eben für Ihre Web-App oder API-App erstellt haben. Sie verwenden diese IDs in Teil 3. Fahren Sie mit den folgenden Schritten für das Azure-Portal fort.
Suchen der Client-ID und der Mandanten-ID der Anwendungsidentität für Ihre Web-App oder API-App im Azure-Portal
Wählen Sie im Navigationsmenü Ihrer Web-App die Option Authentifizierung aus.
Suchen Sie im Abschnitt Identitätsanbieter nach der zuvor erstellten Anwendungsidentität. Wählen Sie den Namen für Ihre Anwendungsidentität aus.
Suchen Sie nach dem Öffnen des Bereichs Übersicht für die Anwendungsidentität die Werte für Anwendungs-ID (Client) und Verzeichnis-ID (Mandant). Kopieren und speichern Sie die Werte zur Verwendung in Teil 3.
Sie können die GUID (Mandanten-ID) bei Bedarf auch in der Bereitstellungsvorlage Ihrer Web-App oder API-App verwenden. Diese GUID ist Ihre spezifische Mandanten-GUID („Mandanten-ID“) und sollte in dieser URL angezeigt werden:
https://sts.windows.net/{GUID}
Einrichten der Authentifizierung bei der Bereitstellung mit einer Azure Resource Manager-Vorlage
Wenn Sie eine ARM-Vorlage (Azure Resource Manager) verwenden, müssen Sie dennoch eine Microsoft Entra-Anwendungsidentität für Ihre Web-App oder API-App erstellen, die sich von der App-Identität für Ihre Logik-App unterscheidet. Führen Sie zum Erstellen der Anwendungsidentität und zum Ermitteln der Client-ID und Mandanten-ID die vorherigen Schritte in Teil 2 für das Azure-Portal aus. Sie verwenden die Client-ID und die Mandanten-ID in der Bereitstellungsvorlage Ihrer App und auch für Teil 3.
Wichtig
Wenn Sie die Microsoft Entra-Anwendungsidentität für Ihre Web-App oder API-App erstellen, müssen Sie anstelle von PowerShell das Azure-Portal verwenden. Mit dem PowerShell-Cmdlet werden nicht die erforderlichen Berechtigungen für die Anmeldung der Benutzer bei einer Website eingerichtet.
Sobald Sie über die Client-ID und die Mandanten-ID verfügen, nehmen Sie diese IDs als untergeordnete Ressourcen Ihrer Web-App oder API-App in Ihre Bereitstellungsvorlage auf:
"resources": [
{
"apiVersion": "2015-08-01",
"name": "web",
"type": "config",
"dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
"properties": {
"siteAuthEnabled": true,
"siteAuthSettings": {
"clientId": "<client-ID>",
"issuer": "https://sts.windows.net/<tenant-ID>/"
}
}
}
]
Für die automatische Bereitstellung einer leeren Web-App und einer Logik-App zusammen mit Microsoft Entra-Authentifizierung können Sie die vollständige Vorlage hier anzeigen oder auf die folgende Schaltfläche In Azure bereitstellen klicken:
Teil 3: Ausfüllen des Abschnitts für die Autorisierung in Ihrer Logik-App
In der obigen Vorlage ist der Abschnitt für diese Autorisierung bereits eingerichtet, aber wenn Sie die Logik-App-Definition direkt erstellen, müssen Sie den gesamten Abschnitt für die Autorisierung aufnehmen.
Öffnen Sie Ihre Logik-App-Definition in der Codeansicht.
Wechseln Sie zur HTTP-Aktionsdefinition und dann zum Abschnitt Autorisierung, und fügen Sie die folgenden Eigenschaften ein:
{
"tenant": "<tenant-ID>",
"audience": "<client-ID-from-Part-2-web-app-or-API app>",
"clientId": "<client-ID-from-Part-1-logic-app>",
"secret": "<secret-from-Part-1-logic-app>",
"type": "ActiveDirectoryOAuth"
}
Eigenschaft | Erforderlich | Beschreibung |
---|---|---|
tenant |
Ja | Die GUID für den Microsoft Entra-Mandanten |
audience |
Ja | Die GUID für die Zielressource, auf die Sie zugreifen möchten. Dies ist die Client-ID der Anwendungsidentität für Ihre Web-App oder API-App |
clientId |
Ja | Die GUID für den Client, der darauf zugreifen möchte. Dies ist die Client-ID der Anwendungsidentität für Ihre Logik-App |
secret |
Ja | Das Geheimnis oder das Kennwort der Anwendungsidentität für den Client, der das Zugriffstoken anfordert |
type |
Ja | Der Authentifizierungstyp. Für die ActiveDirectoryOAuth-Authentifizierung lautet der Wert ActiveDirectoryOAuth . |
Beispiel:
{
"actions": {
"HTTP": {
"inputs": {
"method": "POST",
"uri": "https://your-api-azurewebsites.net/api/your-method",
"authentication": {
"tenant": "tenant-ID",
"audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
"clientId": "client-ID-from-azure-ad-app-for-logic-app",
"secret": "key-from-azure-ad-app-for-logic-app",
"type": "ActiveDirectoryOAuth"
}
}
}
}
}
Sichere API-Aufrufe über Code
Zertifikatauthentifizierung
Sie können Clientzertifikate verwenden, um die eingehenden Anforderungen von Ihrem Logik-App-Workflow für Ihre Web-App oder API-App zu überprüfen. Weitere Informationen zum Einrichten des Codes finden Sie unter Konfigurieren der gegenseitigen TLS-Authentifizierung.
Wichtig
In Produktionsumgebungen sollten Sie vertrauliche Informationen und geheime Schlüssel, z. B. Anmeldeinformationen, Zertifikate, Fingerabdruck, Zugriffstasten und Verbindungszeichenfolgen, immer schützen. Stellen Sie sicher, dass Sie diese Informationen sicher speichern, indem Sie Microsoft Entra ID und Azure Key Vault verwenden. Vermeiden Sie die Hardcodierung dieser Informationen, die Freigabe für andere Benutzer oder das Speichern in Nur-Text an Orten, auf die andere Benutzer zugreifen können. Rotieren Sie Ihre Geheimnisse so bald wie möglich, wenn Sie der Meinung sind, dass diese Informationen kompromittiert wurden. Weitere Informationen finden Sie unter Informationen zu Azure Key Vault.
Schließen Sie im Abschnitt Autorisierung die folgenden Eigenschaften ein:
{
"type": "ClientCertificate",
"password": "<password>",
"pfx": "<long-pfx-key>"
}
Eigenschaft | Erforderlich | Beschreibung |
---|---|---|
type |
Ja | Der Authentifizierungstyp. Für TLS/SSL-Clientzertifikate muss der Wert ClientCertificate lauten. |
password |
Nein | Das Kennwort für den Zugriff auf das Clientzertifikat (PFX-Datei) |
pfx |
Ja | Der base64-codierte Inhalt des Clientzertifikats (PFX-Datei) |
Standardauthentifizierung
Sie können die Standardauthentifizierung, z.B. einen Benutzernamen und ein Kennwort, verwenden, um eingehende Anforderungen von der Logik-App für Ihre Web-App oder API-App zu überprüfen. Obwohl die Standardauthentifizierung ein gängiges Muster ist und Sie diese Authentifizierung in jeder Sprache verwenden können, mit der Ihre Web-App oder API-App erstellt wird, sollten Sie in Produktionsszenarien die beste verfügbare Authentifizierungsstufe verwenden.
Wichtig
Um optimale Sicherheit zu gewährleisten, verwenden Sie nach Möglichkeit Microsoft Entra ID mit verwalteten Identitäten für die Authentifizierung. Diese Methode bietet mehr Sicherheit, ohne Anmeldeinformationen angeben zu müssen. Azure verwaltet diese Identität und hilft, die Sicherheit von Authentifizierungsinformationen zu bewahren, damit Sie diese sensiblen Daten nicht selbst verwalten müssen. Weitere Informationen zum Einrichten einer verwalteten Identität für Azure Logic Apps finden Sie unter Authentifizieren des Zugriffs auf und der Verbindungen mit Azure-Ressourcen mithilfe verwalteter Identitäten in Azure Logic Apps.
Wenn Sie einen anderen Authentifizierungstyp verwenden müssen, verwenden Sie die nächst höhere verfügbare Sicherheitsoption. Angenommen, Sie müssen stattdessen eine Verbindung mithilfe einer Verbindungszeichenfolge erstellen. Eine Verbindungszeichenfolge enthält die Autorisierungsinformationen, die Ihre App für den Zugriff auf eine bestimmte Ressource benötigt. Der Zugriffsschlüssel in der Verbindungszeichenfolge ähnelt einem Stammkennwort.
In Produktionsumgebungen sollten Sie vertrauliche Informationen und geheime Schlüssel, z. B. Anmeldeinformationen, Zertifikate, Fingerabdruck, Zugriffstasten und Verbindungszeichenfolgen, immer schützen. Stellen Sie sicher, dass Sie diese Informationen sicher speichern, indem Sie Microsoft Entra ID und Azure Key Vault verwenden. Vermeiden Sie die Hardcodierung dieser Informationen, die Freigabe für andere Benutzer oder das Speichern in Nur-Text an Orten, auf die andere Benutzer zugreifen können. Rotieren Sie Ihre Geheimnisse so bald wie möglich, wenn Sie der Meinung sind, dass diese Informationen kompromittiert wurden. Weitere Informationen finden Sie unter Informationen zu Azure Key Vault.
Schließen Sie im Abschnitt Autorisierung die folgenden Eigenschaften ein:
{
"type": "Basic",
"username": "<username>",
"password": "<password>"
}
Eigenschaft | Erforderlich | Beschreibung |
---|---|---|
type |
Ja | Der Authentifizierungstyp, den Sie verwenden möchten. Für die Standardauthentifizierung muss der Wert Basic lauten. |
username |
Ja | Der Benutzername, den Sie für die Authentifizierung verwenden möchten |
password |
Ja | Das Kennwort, das Sie für die Authentifizierung verwenden möchten |
Microsoft Entra-Authentifizierung über Code
Bei der Microsoft Entra-Authentifizierung, die Sie im Azure-Portal aktivieren, wird standardmäßig keine fein abgestufte Autorisierung durchgeführt. Beispielsweise sperrt diese Authentifizierung Ihre API nur für einen bestimmten Mandanten und nicht für einen bestimmten Benutzer oder eine App.
Extrahieren Sie den Header, der das JSON Web Token (JWT) enthält, um den API-Zugriff auf die Logik-App über Code zu beschränken. Überprüfen Sie die Identität des Aufrufers, und lehnen Sie Anforderungen ab, die nicht übereinstimmen.