Freigeben über


Benutzerauthentifizierung

GILT FÜR: SDK v4

Manchmal muss ein Bot im Namen des Benutzers auf gesicherte Onlineressourcen zugreifen, z. B. E-Mails überprüfen, Den Flugstatus überprüfen oder eine Bestellung aufgeben. Der Benutzer muss den Bot autorisieren, dies in ihrem 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.

Wenn Sie Ihr OAuth-Wissen aktualisieren möchten, lesen Sie Folgendes:

Benutzerauthentifizierung in einer Unterhaltung

Um bestimmte Vorgänge im Namen eines Benutzers auszuführen, z. B. E-Mails überprüfen, einen Kalender verweisen, den Flugstatus überprüfen oder eine Bestellung aufgeben möchten, muss der Bot einen externen Dienst aufrufen, z. B. Microsoft Graph, GitHub oder der REST-Dienst eines Unternehmens. Jeder externe Dienst hat eine Möglichkeit, diese Aufrufe zu sichern. Eine häufige Möglichkeit zum Ausgeben dieser Anforderungen besteht darin, ein Benutzertoken zu verwenden, das den Benutzer für diesen externen Dienst eindeutig identifiziert (manchmal auch als JSON-Webtoken (JWT) bezeichnet).

Um den Aufruf eines externen Diensts zu sichern, 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 OAuth- oder OAuth2-Protokoll .

Der Azure AI Bot Service bietet spezielle Anmeldekarten und -dienste, die mit dem OAuth-Protokoll arbeiten und den Tokenlebenszyklus verwalten. Ein Bot kann diese Features verwenden, um ein Benutzertoken abzurufen.

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

    Die Verbindung enthält Informationen über den zu verwendenden Identitätsanbieter sowie eine gültige OAuth-Client-ID und einen geheimen Schlüssel, die OAuth-Bereiche, die aktiviert werden sollen, und alle anderen Verbindungsmetadaten, die von diesem Identitätsanbieter benötigt werden.

  • Im Code des Bots wird die OAuth-Verbindung verwendet, um die Anmeldung beim Benutzer zu unterstützen und das Benutzertoken abzurufen.

Die folgende Abbildung zeigt die Elemente, die am Authentifizierungsprozess beteiligt sind.

Diagramm zur Veranschaulichung der Beziehung zwischen Authentifizierungskomponenten im Azure AI Bot-Dienst.

Informationen zum Bot Framework-Tokendienst

Der Bot Framework-Tokendienst ist für Folgendes verantwortlich:

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

    Tipp

    Wenn der Bot über ein abgelaufenes Benutzertoken verfügt, sollte der Bot Folgendes ausführen:

    • Abmelden des Benutzers
    • Initiieren des Anmeldeablaufs erneut

Beispielsweise erfordert ein Bot, der die letzten E-Mails eines Benutzers mithilfe der Microsoft Graph-API überprüfen kann, ein Benutzertoken von einem Identitätsanbieter, in diesem Fall Microsoft Entra-ID. In der Entwurfsphase führt der Bot-Entwickler die folgenden beiden wichtigen Schritte aus:

  1. Registriert eine Microsoft Entra ID-Anwendung, einen Identitätsanbieter, mit dem Bot Framework-Tokendienst über das Azure-Portal.
  2. Konfiguriert eine OAuth-Verbindung, die z. B. GraphConnection benannt ist, für den Bot.

Die folgende Abbildung zeigt die Zeitabfolge der Interaktion des Benutzers mit einem Bot, wenn eine E-Mail-Anforderung mit dem Microsoft Graph-Dienst erfolgt.

Sequenzdiagramm, in dem die Schritte für einen Bot zum Senden einer E-Mail im Auftrag eines Benutzers beschrieben werden.

  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 userid Feld innerhalb der Aktivität festgelegt wurde und die Nachricht an den Bot gesendet wird.

    Hinweis

    Die Benutzer-ID ist kanalspezifisch, z. B. die Facebook-ID des Benutzers oder seine SMS-Telefonnummer.

  3. Der Bot sendet eine Anforderung an den Bot Framework-Tokendienst, der fragt, ob er bereits über ein Token für die UserId für die OAuth-Verbindung GraphConnectionverfügt.

  4. Da dieser Benutzer zum ersten Mal mit dem Bot interagiert hat, verfügt der Bot Framework-Tokendienst noch nicht über ein Token für diesen Benutzer und gibt ein NotFound-Ergebnis an den Bot zurück.

    Hinweis

    Wenn das Token gefunden wird, werden die Authentifizierungsschritte übersprungen, und der Bot kann die E-Mail-Anforderung mithilfe des gespeicherten Tokens vornehmen.

  5. Der Bot erstellt eine OAuthCard mit einem Verbindungsnamen GraphConnection und antwortet auf den Benutzer, der aufgefordert wird, sich mit dieser 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 OAuthCard hinzugefügt, und die Karte wird an den Benutzer zurückgegeben.

  7. Dem Benutzer wird eine Meldung zum Anmelden angezeigt, indem er auf die Anmeldeschaltfläche der OAuthCard klickt.

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

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

  10. Der Bot empfängt die Aktivität mit dem Token und kann sie verwenden, um Aufrufe für die MS Graph-API auszuführen.

Sichern der Anmelde-URL

Ein wichtiger Aspekt, wenn das Bot Framework eine Benutzeranmeldung erleichtert, besteht darin, die Anmelde-URL zu sichern. Wenn einem Benutzer eine Anmelde-URL angezeigt wird, wird diese URL einer bestimmten Unterhaltungs-ID und Benutzer-ID für diesen Bot zugeordnet. Teilen Sie diese URL nicht—es könnte dazu führen, dass eine falsche Anmeldung bei einem bestimmten Bot-Gespräch erfolgt. Um Sicherheitsangriffe abzumildern, die eine gemeinsam genutzte Anmelde-URL verwenden, stellen Sie sicher, dass der Computer und die Person, die auf die Anmelde-URL klicken, die Besitzer des Unterhaltungsfensters sind.

Einige Kanäle wie Microsoft Teams, Direct Line und WebChat können dies tun, ohne dass der Benutzer es bemerkt. WebChat verwendet beispielsweise Sitzungscookies, um sicherzustellen, dass der Anmeldeprozess im selben Browser wie die WebChat-Unterhaltung stattgefunden hat. Für andere Kanäle wird der Benutzer jedoch häufig mit einem 6-stelligen Zaubercode präsentiert. Dies ähnelt einer integrierten mehrstufigen Authentifizierung, da der Bot Framework-Tokendienst das Token nicht für den Bot freigeben wird, es sei denn, der Benutzer hat die endgültige Authentifizierung abgeschlossen, was beweist, dass die Person, die sich angemeldet hat, Zugriff auf die Chaterfahrung hat, indem Sie den 6-stelligen Code eingeben.

Von Bedeutung

Beachten Sie bitte diese wichtigen Sicherheitsaspekte. Weitere Informationen finden Sie in diesem Blogbeitrag: Verwenden von WebChat mit Azure AI Bot Service Authentication.

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