Freigeben über


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:

Authentifizieren von Aufrufen Ihrer API ohne Codeänderungen

Im Folgenden sind die allgemeinen Schritte für diese Methode aufgeführt:

  1. Erstellen Sie zwei Microsoft Entra-Anwendungsidentitäten: eine für Ihre Logik-App-Ressource und eine für Ihre Web-App (oder API-App).

  2. 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.

  3. 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.

  1. Wählen Sie im Azure-Portal die Option Microsoft Entra ID aus.

  2. 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.

  3. 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.

    Screenshot: Azure-Portal mit Microsoft Entra-Instanz, Bereich „App-Registrierung“ mit ausgewählter Option „Neue Anwendungsregistrierung“

  4. 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.

    Screenshot: Bereich „Anwendung registrieren“ mit Name der Anwendungsidentität und URL, an die die Authentifizierungsantwort gesendet werden soll

    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.

    Screenshot: Anwendungsidentität für Ihre Logik-App

  5. Wählen Sie in der Liste der App-Registrierungen Ihre neue Anwendungsidentität aus.

  6. Wählen Sie im Navigationsmenü „Anwendungsidentität“ die Option Übersicht aus.

  7. 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.

    Screenshot: Unterstrichene Anwendungs-ID (Client-ID)

  8. Wählen Sie im Navigationsmenü „Anwendungsidentität“ die Option Zertifikate und Geheimnisse aus.

  9. Wählen Sie auf der Registerkarte Geheime Clientschlüssel die Option Neuer geheimer Clientschlüssel aus.

  10. 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.

    Screenshot: Geheimniserstellung für die Anwendungsidentität

    Im Bereich Zertifikate und Geheimnisse wird unter Geheime Clientschlüssel Ihr Geheimnis nun zusammen mit einem Geheimniswert und einer Geheimnis-ID angezeigt.

    Screenshot: Geheimniswert und Geheimnis-ID mit ausgewählter Kopierschaltfläche für Geheimniswert

  11. 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

  1. Suchen Sie im Azure-Portal Ihre Web-App oder API-App, und wählen Sie sie aus.

  2. Wählen Sie unter Einstellungen die Option Authentifizierung>Identitätsanbieter hinzufügen aus.

  3. 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.

  4. Erstellen Sie nun wie folgt eine Anwendungsidentität für Ihre Web-App oder API-App:

    1. Wählen Sie unter App-Registrierungstyp die Option Neue App-Registrierung erstellen aus.

    2. Geben Sie unter Name einen Namen für Ihre Anwendungsidentität an.

    3. Wählen Sie unter Unterstützte Kontotypen die Kontotypen aus, die für Ihr Szenario geeignet sind.

    4. Wählen Sie unter Zugriff einschränken die Option Authentifizierung erforderlich aus.

    5. Wählen Sie unter Nicht authentifizierte Anforderungen die Option basierend auf Ihrem Szenario aus.

    6. 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:

    Screenshot: Neu erstellte Anwendungsidentität für Web-App oder API-App

    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

  1. Wählen Sie im Navigationsmenü Ihrer Web-App die Option Authentifizierung aus.

  2. Suchen Sie im Abschnitt Identitätsanbieter nach der zuvor erstellten Anwendungsidentität. Wählen Sie den Namen für Ihre Anwendungsidentität aus.

    Screenshot: Neu erstellte Anwendungsidentität mit geöffnetem Bereich „Übersicht“

  3. 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.

    Screenshot: Bereich „Übersicht“ der Anwendungsidentität mit den unterstrichenen Werten „Anwendungs-ID (Client)“ und „Verzeichnis-ID (Mandant)“

    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:

Bereitstellung in Azure

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.

  1. Öffnen Sie Ihre Logik-App-Definition in der Codeansicht.

  2. 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.

Nächste Schritte