Benutzerauthentifizierung

GILT FÜR: SDK v4

Manchmal muss ein Bot im Namen des Benutzers auf gesicherte Onlineressourcen zugreifen, z. B. um E-Mails abzurufen, den Flugstatus zu überprüfen oder eine Bestellung aufzugeben. Der Benutzer muss den Bot autorisieren, dies in seinem Namen zu tun, und um den Bot zu autorisieren, muss der Benutzer seine Identität authentifizieren. OAuth wird verwendet, um den Benutzer zu authentifizieren und den Bot zu autorisieren. Siehe auch Authentifizierungstypen.

Ihre OAuth-Kenntnisse können Sie bei Bedarf anhand der folgenden Artikel auffrischen:

Benutzerauthentifizierung in einer Konversation

Zum Ausführen bestimmter Vorgänge im Namen eines Benutzers, z. B. das Überprüfen von E-Mails, Verweisen auf einen Kalender, Überprüfen des Flugstatus oder Aufgeben einer Bestellung, muss der Bot einen externen Dienst wie Microsoft Graph, GitHub oder den REST-Dienst eines Unternehmens aufrufen. Jeder externe Dienst verfügt über eine Möglichkeit, diese Aufrufe zu schützen. Eine gängige Ausgabemethode für diese Anforderungen ist die Verwendung eines Benutzertokens, das den Benutzer in diesem externen Dienst eindeutig identifiziert. (Dieses Token wird manchmal auch als JSON Web Token (JWT) bezeichnet.)

Zum Sichern des Aufrufs eines externen Diensts muss der Bot den Benutzer auffordern, sich anzumelden, damit er das Token des Benutzers für diesen Dienst abrufen kann. Viele Dienste unterstützen den Tokenabruf über das Protokoll OAuth oder OAuth2.

Der Azure KI Bot Service bietet spezielle Karten und Dienste für die Anmeldung, die das OAuth-Protokoll verwenden und den Token-Lebenszyklus verwalten. Ein Bot kann diese Features nutzen, um ein Benutzertoken abzurufen.

  • Im Rahmen der Botkonfiguration wird eine OAuth-Verbindung in der Azure KI Bot Service-Ressource in Azure registriert.

    Die Verbindung enthält Informationen zum zu verwendenden Identitätsanbieter sowie eine gültige OAuth-Client-ID und ein entsprechendes Geheimnis, die zu aktivierenden OAuth-Bereiche und alle anderen Verbindungsmetadaten, die von diesem Identitätsanbieter benötigt werden.

  • Im Code des Bots wird die OAuth-Verbindung verwendet, um den Benutzer anzumelden und das Benutzertoken zu erhalten.

Die folgende Abbildung zeigt die am Authentifizierungsprozess beteiligten Elemente:

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

Informationen zum Bot Framework-Tokendienst

Der Bot Framework-Tokendienst ist zuständig für:

  • Erleichterung der Nutzung des OAuth-Protokolls mit einer Vielzahl von externen Diensten
  • Sicheres Speichern von Token für einen bestimmten Bot, Kanal, eine bestimmte Konversation und einen bestimmten Benutzer
  • Abrufen von Benutzertoken

    Tipp

    Enthält der Bot ein abgelaufenes Benutzertoken, muss er folgende Aktionen ausführen:

    • Abmelden des Benutzers
    • Erneutes Initiieren des Anmeldeflows

Ein Bot, der über die Microsoft Graph-API die neuesten E-Mails eines Benutzers abrufen kann, benötigt beispielsweise ein Benutzertoken von einem Identitätsanbieter (in diesem Fall: Microsoft Entra ID). Zur Entwurfszeit führt der Botentwickler zwei wichtige Schritte aus:

  1. Er registriert über das Azure-Portal eine Microsoft-Entra-ID-Anwendung (Identitätsanbieter) beim Bot Framework-Tokendienst.
  2. Er konfiguriert eine OAuth-Verbindung (beispielsweise mit dem Namen GraphConnection) für den Bot.

Die folgende Abbildung zeigt den zeitlichen Ablauf der Benutzerinteraktion mit einem Bot am Beispiel einer E-Mail-Anforderung über den Microsoft Graph-Dienst:

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

  1. Der Benutzer sendet eine E-Mail-Anforderung an den Bot.

  2. Eine Aktivität mit dieser Nachricht wird vom Benutzer an den Bot Framework-Kanaldienst gesendet. Der Kanaldienst stellt sicher, dass das Feld userid in der Aktivität festgelegt wurde und die Nachricht an den Bot gesendet wird.

    Hinweis

    Benutzer-IDs sind kanalspezifisch. Beispiele wären etwa die Facebook-ID des Benutzers oder die Telefonnummer für SMS-Nachrichten.

  3. Der Bot sendet eine Anforderung an den Bot Framework-Tokendienst, um zu ermitteln, ob bereits ein Token für die Benutzer-ID für die OAuth-Verbindung GraphConnection vorhanden ist.

  4. Da dies das erste Mal ist, dass dieser Benutzer mit dem Bot interagiert, hat der Bot Framework-Tokendienst noch kein Token für diesen Benutzer und gibt ein NotFound-Ergebnis an den Bot zurück.

    Hinweis

    Wird das Token gefunden, werden die Authentifizierungsschritte übersprungen, und der Bot kann für die E-Mail-Anforderung das gespeicherte Token verwenden.

  5. Der Bot erstellt eine OAuth-Karte mit dem Verbindungsnamen GraphConnection und fordert den Benutzer auf, sich über diese Karte anzumelden.

  6. Die Aktivität durchläuft den Bot Framework-Kanaldienst, der den Bot Framework-Tokendienst aufruft, um eine gültige OAuth-Anmelde-URL für diese Anforderung zu erstellen. Diese Anmelde-URL wird der OAuth-Karte hinzugefügt, und die Karte wird an den Benutzer zurückgegeben.

  7. Dem Benutzer wird beim Anklicken der Anmeldeschaltfläche der OAuth-Karte eine Nachricht zur Anmeldung angezeigt.

  8. Wenn der Benutzer auf die Schaltfläche zum Anmelden klickt, öffnet der Kanaldienst einen Webbrowser und ruft den externen Dienst auf, um seine Anmeldeseite zu laden.

  9. Der Benutzer meldet sich auf dieser Seite für den externen Service an. Danach schließt der externe Dienst OAuth-Protokollaustausch mit dem Bot Framework-Tokendienst ab, woraufhin der externe Dienst dem Bot Framework-Tokendienst das Benutzertoken sendet. Der Bot Framework-Tokendienst speichert dieses Token sicher und sendet mit diesem Token eine Aktivität an den Bot.

  10. Der Bot erhält die Aktivität mit dem Token und kann dieses daraufhin für Microsoft Graph-API-Aufrufe verwenden.

Sichern der Anmelde-URL

Ein wichtiger Aspekt bei der Nutzung des Bot Framework für eine Benutzeranmeldung ist die Sicherung der Anmelde-URL. Wenn einem Benutzer eine Anmelde-URL bereitgestellt wird, wird diese URL mit einer bestimmten Konversations-ID und Benutzer-ID für diesen Bot verknüpft. Geben Sie diese URL nicht weiter, da dies zu einer falschen Anmeldung für eine bestimmte Bot-Konversation führen würde. Um Sicherheitsangriffe abzuschwächen, die eine gemeinsame Anmelde-URL verwenden, stellen Sie sicher, dass der Computer und die Person, die auf die Anmelde-URL klickt, die Person ist, die das Konversationsfenster besitzt.

Einige Kanäle wie Microsoft Teams, Direct Line und WebChat sind dazu in der Lage, ohne dass der Benutzer etwas davon mitbekommt. So verwendet WebChat beispielsweise Sitzungscookies, um sicherzustellen, dass der Anmeldevorgang im selben Browser wie die WebChat-Konversation stattfand. Für andere Kanäle wird dem Benutzer jedoch oft ein 6-stelliger Magic-Befehlscode bereitgestellt. Dies ist vergleichbar mit einer integrierten mehrstufigen Authentifizierung, da der Bot Framework-Tokendienst das Token erst dann an den Bot weitergibt, wenn der Benutzer die endgültige Authentifizierung abgeschlossen hat, was beweist, dass die Person, die sich angemeldet hat, durch Eingabe des 6-stelligen Codes Zugriff auf die Chatumgebung hat.

Wichtig

Beachten Sie diese wichtigen Sicherheitsüberlegungen. Weitere Informationen finden Sie in diesem Blogbeitrag: Verwenden von WebChat mit Azure KI Bot Service-Authentifizierung.

Nächste Schritte

Nachdem Sie nun über die Benutzerauthentifizierung informiert sind, schauen wir uns an, wie Sie dies auf Ihren Bot anwenden können.

Siehe auch