Hinzufügen von Authentifizierung beim Aufrufen benutzerdefinierter APIs in Azure Logic Apps

Um die Sicherheit für Aufrufe ihrer APIs zu verbessern, können Sie die Microsoft Entra-Authentifizierung über die Azure-Portal einrichten, damit 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 Codeänderungen: Schützen Sie Ihre API mit Microsoft Entra ID über die Azure-Portal, sodass Sie Ihren Code nicht aktualisieren oder Ihre API erneut bereitstellen müssen.

    Hinweis

    Standardmäßig bietet die Microsoft Entra-Authentifizierung, die Sie in der Azure-Portal auswählen, keine differenzierte Autorisierung. Beispielsweise sperrt diese Authentifizierung Ihre API nur für einen bestimmten Mandanten und nicht für einen bestimmten Benutzer oder eine App.

  • Aktualisieren Sie den Code Ihrer API: Schützen Sie Ihre API, indem Sie die Zertifikatauthentifizierung, die Standardauthentifizierung oder die 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:

  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. Um Aufrufe an Ihre API zu authentifizieren, verwenden Sie die Anmeldeinformationen (Client-ID und geheimen Schlüssel) für den Dienstprinzipal, der 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 Ihre Logik-App

Ihre Logik-App-Ressource verwendet diese Microsoft Entra-Anwendungsidentität, um sich bei Microsoft Entra-ID zu authentifizieren. 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 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 showing Azure portal with Microsoft Entra instance,

  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 showing

    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 showing the application identity for your logic 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 showing the application (client) ID underlined.

  8. Wählen Sie im Navigationsmenü "Anwendungsidentität" die Option "Zertifikate und Geheime Schlüssel" 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 showing secret creation for application identity.

    Im Bereich "Zertifikate und Geheime Schlüssel" wird ihr geheimer Schlüssel nun zusammen mit einem geheimen Wert und einer geheimen ID angezeigt.

    Screenshot showing secret value and secret ID with copy button for secret value selected.

  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 Ihre 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 wird, wählen Sie auf der Registerkarte "Grundlagen" in der Liste "Identitätsanbieter" Microsoft aus, um Microsoft Entra-Identitäten zu verwenden, und 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 showing newly created application identity for web app or 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 showing newly created application identity with 'Overview' pane open.

  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 showing application identity's 'Overview' pane open with 'Application (client) ID' value and 'Directory (tenant) ID' value underlined.

    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 Azure Resource Manager-Vorlage (ARM-Vorlage) 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 die Azure-Portal und nicht PowerShell 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>/"
         }
      }
   }
]

Um automatisch eine leere Web-App und eine Logik-App zusammen mit der Microsoft Entra-Authentifizierung bereitzustellen, zeigen Sie hier die vollständige Vorlage an, oder wählen Sie die folgende Schaltfläche "In Azure bereitstellen" aus:

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

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. Die Standardauthentifizierung ist ein gängiges Muster, und Sie können diese Authentifizierung in jeder Sprache verwenden, mit der Ihre Web-App oder API-App erstellt wird.

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

Standardmäßig bietet die Microsoft Entra-Authentifizierung, die Sie in der Azure-Portal aktivieren, keine differenzierte Autorisierung. 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