Microsoft Teams Authentifizierungsfluss für Bots

Wichtig

Dieser Artikel basiert auf dem v3 Bot Framework SDK. Wenn Sie nach der aktuellen Dokumentationsversion 4.6 oder höher des SDK suchen, lesen Sie den Abschnitt "Unterhaltungsbots".

OAuth 2.0 ist ein offener Standard für die Authentifizierung und Autorisierung, der von Azure AD und vielen anderen Identitätsanbietern verwendet wird. Ein grundlegendes Verständnis von OAuth 2.0 ist eine Voraussetzung für die Arbeit mit der Authentifizierung in Teams; Hier ist eine gute Übersicht, die einfacher zu befolgen ist als die formale Spezifikation. Der Authentifizierungsfluss für Registerkarten und Bots unterscheidet sich etwas, da Registerkarten Websites sehr ähnlich sind, sodass sie OAuth 2.0 direkt verwenden können. Bots sind und müssen einige Dinge nicht anders ausführen, aber die Kernkonzepte sind identisch.

Ein Beispiel, das den Authentifizierungsfluss für Bots veranschaulicht, die Node mithilfe des OAuth 2.0-Autorisierungscodeerteilungstypsverwenden, finden Sie im GitHub Repository Microsoft Teams Authentication-Beispiel.

Diagramm der Bot-Authentifizierungssequenz

  1. Der Benutzer sendet eine Nachricht an den Bot.
  2. Der Bot bestimmt, ob sich der Benutzer anmelden muss.
    • In diesem Beispiel speichert der Bot das Zugriffstoken in seinem Benutzerdatenspeicher. Der Benutzer wird aufgefordert, sich anzumelden, wenn kein überprüftes Token für den ausgewählten Identitätsanbieter vorhanden ist. (Ansichtscode)
  3. Der Bot erstellt die URL zur Startseite des Authentifizierungsflusses und sendet eine Karte mit einer Aktion an den signin Benutzer. (Ansichtscode)
    • Wie andere Anwendungsauthentifizierungsflüsse in Teams muss sich die Startseite in einer Domäne befinden, die sich in Ihrer validDomains Liste befindet, und in derselben Domäne wie die Umleitungsseite nach der Anmeldung.
    • WICHTIG: Der OAuth 2.0-Autorisierungscode-Genehmigungsfluss ruft einen state Parameter in der Authentifizierungsanforderung auf, der ein eindeutiges Sitzungstoken enthält, um einen websiteübergreifenden Anforderungs-Forgery-Angriffzu verhindern. Im Beispiel wird eine zufällig generierte GUID verwendet.
  4. Wenn der Benutzer auf die Anmeldeschaltfläche klickt, öffnet Teams ein Popupfenster und navigiert zur Startseite.
  5. Die Startseite leitet den Benutzer an den Endpunkt des Identitätsanbieters authorize weiter. (Ansichtscode)
  6. Auf der Website des Anbieters meldet sich der Benutzer an und gewährt Zugriff auf den Bot.
  7. Der Anbieter führt den Benutzer mit einem Autorisierungscode zur OAuth-Umleitungsseite des Bots.
  8. Der Bot löst den Autorisierungscode für ein Zugriffstoken ein und ordnet das Token vorläufig dem Benutzer zu, der den Anmeldefluss initiiert hat. Nachfolgend wird dies als vorläufiges Token bezeichnet.
    • In dem Beispiel ordnet der Bot den Wert des Parameters der ID des Benutzers zu, state der den Anmeldevorgang initiiert hat, damit er ihn später mit dem vom Identitätsanbieter zurückgegebenen Wert abgleichen state kann. (Ansichtscode)
    • WICHTIG: Der Bot speichert das Token, das er vom Identitätsanbieter erhält, und ordnet es einem bestimmten Benutzer zu, ist jedoch als "ausstehende Überprüfung" gekennzeichnet. Das vorläufige Token kann noch nicht verwendet werden: Es muss weiter überprüft werden:
      1. Überprüfen, was vom Identitätsanbieter empfangen wird. Der Wert des Parameters muss gegenüber dem state bestätigt werden, was zuvor gespeichert wurde.
      2. Überprüfen, was von Teams empfangen wird. Es wird eine zweistufige Authentifizierungsüberprüfung durchgeführt, um sicherzustellen, dass der Benutzer, der den Bot mit dem Identitätsanbieter autorisiert hat, derselbe Benutzer ist, der mit dem Bot chatscht. Dies schützt vor Man-in-the-Middle- und Phishing-Angriffen. Der Bot generiert einen Überprüfungscode und speichert ihn, der dem Benutzer zugeordnet ist. Der Überprüfungscode wird automatisch von Teams gesendet, wie unten in den Schritten 9 und 10 beschrieben. (Ansichtscode)
  9. Der OAuth-Rückruf rendert eine Seite, die notifySuccess("<verification code>") aufruft. (Ansichtscode)
  10. Teams schließt das Popup und sendet das <verification code> Gesendete notifySuccess() an den Bot zurück. Der Bot empfängt eine Aufrufnachricht mit name = signin/verifyState .
  11. Der Bot überprüft den eingehenden Überprüfungscode anhand des Überprüfungscodes, der mit dem vorläufigen Token des Benutzers gespeichert ist. (Ansichtscode)
  12. Wenn sie übereinstimmen, markiert der Bot das Token als überprüft und einsatzbereit. Andernfalls schlägt der Authentifizierungsfluss fehl, und der Bot löscht das vorläufige Token.

Hinweis

Wenn Probleme mit der Authentifizierung auf mobilen Geräten auftreten, stellen Sie sicher, dass Ihr Javascript SDK auf Version 1.4.1 oder höher aktualisiert ist.

Beispiele

Beispielcode für den Bot-Authentifizierungsprozess finden Sie unter:

Weitere Informationen

Ausführliche Exemplarische Vorgehensweisen zur Implementierung der Bot-Authentifizierung für Azure Active Directory finden Sie unter: