Microsoft Teams-Authentifizierungs Fluss für BotsMicrosoft Teams authentication flow for bots

Wichtig

Die Artikel in diesem Abschnitt basieren auf dem V3 bot Framework SDK.The articles in this section are based on the v3 Bot Framework SDK. Wenn Sie nach der aktuellen Dokumentation (Version 4,6 oder höher des SDK) suchen, lesen Sie den Abschnitt conversational Bots .If you're looking for current documentation (version 4.6 or later of the SDK) see the Conversational Bots section.

OAuth 2,0 ist ein offener Standard für Authentifizierung und Autorisierung, der von Azure AD und vielen anderen Identitätsanbietern verwendet wird.OAuth 2.0 is an open standard for authentication and authorization used by Azure AD and many other identity providers. Ein grundlegendes Verständnis von OAuth 2,0 ist eine Voraussetzung für die Verwendung von Authentifizierung in Microsoft Teams. hier finden Sie eine gute Übersicht , die einfacher zu befolgen ist als die formale Spezifikation.A basic understanding of OAuth 2.0 is a prerequisite for working with authentication in Teams; here's a good overview that's easier to follow than the formal specification. Authentifizierungs Fluss für Registerkarten und Bots sind ein wenig anders, da Registerkarten sehr ähnlich zu Websites sind, damit Sie OAuth 2,0 direkt verwenden können, und Bots sind nicht und müssen ein paar Dinge anders tun, aber die Kernkonzepte sind identisch.Authentication flow for tabs and bots are a little different because tabs are very similar to websites so they can use OAuth 2.0 directly, and bots are not and must do a few things differently, but the core concepts are identical.

Im GitHub Repo Microsoft Teams-Authentifizierungs Beispiel wird ein Beispiel für den Authentifizierungsablauf für Bots verwendet, die den Knoten mit dem OAuth 2,0-Autorisierungscode Grant-Typverwenden.See the GitHub repo Microsoft Teams Authentication Sample for an example that demonstrates authentication flow for bots using Node using the OAuth 2.0 authorization code grant type.

Robot-Authentifizierungs-Sequenzdiagramm

  1. Der Benutzer sendet eine Nachricht an den bot.The user sends a message to the bot.
  2. Der bot bestimmt, ob der Benutzer sich anmelden muss.The bot determines if the user needs to sign in.
    • In diesem Beispiel speichert der bot das Zugriffstoken in seinem Benutzerdatenspeicher.In this example, the bot stores the access token in its user data store. Der Benutzer wird aufgefordert, sich anzumelden, wenn er kein validiertes Token für den ausgewählten Identitätsanbieter besitzt.It asks the user to log in if it doesn't have a validated token for the selected identity provider. (Code anzeigen)(View code)
  3. Der bot konstruiert die URL der Startseite des Authentifizierungs Flusses und sendet eine Karte an den Benutzer mit einer signin Aktion.The bot constructs the URL to the start page of the authentication flow, and sends a card to the user with a signin action. (Code anzeigen)(View code)
    • Wie bei anderen Anwendungs Authentifizierungs Abläufen in Microsoft Teams muss sich die Startseite in einer Domäne befinden validDomains , die sich in Ihrer Liste befindet, und in derselben Domäne wie die Umleitungsseite nach der Anmeldung.Like other application auth flows in Teams, the start page must be on a domain that's in your validDomains list, and on the same domain as the post-login redirect page.
    • Wichtig: der OAuth 2,0-Autorisierungscode Grant-Fluss state Ruft für einen Parameter in der Authentifizierungsanforderung, die ein eindeutiges Sitzungstoken enthält, um einen Fälschungs Angriff mit standortübergreifender Anforderungzu verhindern.IMPORTANT: The OAuth 2.0 authorization code grant flow calls for a state parameter in the authentication request which contains a unique session token to prevent a cross-site request forgery attack. Im Beispiel wird eine zufällig generierte GUID verwendet.The example uses a randomly-generated GUID.
  4. Wenn der Benutzer auf die Schaltfläche " SignIn " klickt, öffnet Microsoft Teams ein Popupfenster und navigiert es zur Startseite.When the user clicks on the signin button, Teams opens a popup window and navigates it to the start page.
  5. Auf der Startseite wird der Benutzer an den authorize Endpunkt des Identitätsanbieters umgeleitet.The start page redirects the user to the identity provider's authorize endpoint. (Code anzeigen)(View code)
  6. Der Benutzer meldet sich auf der Website des Anbieters an und erteilt Zugriff auf den bot.On the provider's site, the user signs in and grants access to the bot.
  7. Der Anbieter führt den Benutzer mit einem Autorisierungscode zur OAuth-Umleitungsseite des bot.The provider takes the user to the bot's OAuth redirect page, with an authorization code.
  8. Der bot löst den Autorisierungscode für ein Zugriffstoken aus und ordnet das Token vorläufig dem Benutzer zu, der den Anmelde Fluss initiiert hat.The bot redeems the authorization code for an access token, and provisionally associates the token with the user that initiated the sign-in flow. Im folgenden wird dies als provisorisches Tokenbezeichnet.Below, we call this a provisional token.
    • Im Beispiel ordnet der bot den Wert des state Parameters der ID des Benutzers zu, der den Anmeldeprozess initiiert hat, sodass er ihn später mit dem state vom Identitätsanbieter zurückgegebenen Wert abgleichen kann.In the example, the bot associates the value of the state parameter with the id of the user that initiated the sign-in process so it can later match it with the state value returned by the identity provider. (Code anzeigen)(View code)
    • Wichtig: der bot speichert das Token, das vom Identitätsanbieter empfangen wird, und ordnet ihn einem bestimmten Benutzer zu, wird jedoch als "ausstehende Validierung" gekennzeichnet.IMPORTANT: The bot stores the token it receives from the identity provider and associates it with a specific user, but it is marked as "pending validation". Das vorläufige Token kann noch nicht verwendet werden: Es muss weiter validiert werden:The provisional token cannot be used yet: it must be further validated:
      1. Überprüfen Sie, was vom Identitätsanbieter empfangen wurde.Validate what's received from the identity provider. Der Wert des state Parameters muss gegenüber dem, was zuvor gespeichert wurde, bestätigt werden.The value of the state parameter must be confirmed against what was saved earlier.
      2. Überprüfen Sie, was von Microsoft Teams empfangen wurde.Validate what's received from Teams. 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 chattet.A two-step authentication validation is performed to ensure that the user who authorized the bot with the identity provider is the same user who is chatting with the bot. Dies schützt vor man-in-the-Middle -und Phishing -Angriffen.This guards against man-in-the-middle and phishing attacks. Der Bot generiert einen Überprüfungscode und speichert ihn, der dem Benutzer zugeordnet ist.The bot generates a verification code and stores it, associated with the user. Der Überprüfungscode wird automatisch von Microsoft Teams gesendet, wie weiter unten in den Schritten 9 und 10 beschrieben.The verification code is sent automatically by Teams as described below in steps 9 and 10. (Code anzeigen)(View code)
  9. Der OAuth-Rückruf rendert eine Seite, notifySuccess("<verification code>")die ruft.The OAuth callback renders a page that calls notifySuccess("<verification code>"). (Code anzeigen)(View code)
  10. Teams schließt das Popup und sendet das <verification code> an den notifySuccess() bot zurückgesendete.Teams closes the popup and sends the <verification code> sent to notifySuccess() back to the bot. Der bot erhält eine Invoke -Nachricht name = signin/verifyStatemit.The bot receives an invoke message with name = signin/verifyState.
  11. Der bot überprüft den eingehenden Verifizierungscode mit dem Bestätigungscode, der mit dem provisorischen Token des Benutzers gespeichert ist.The bot checks the incoming verification code against the verification code stored with the user's provisional token. (Code anzeigen)(View code)
  12. Wenn Sie übereinstimmen, markiert der bot das Token als validiert und kann verwendet werden.If they match, the bot marks the token as validated and ready for use. Andernfalls schlägt der Authentifizierungs Fluss fehl, und der bot löscht das provisorische Token.Otherwise, the auth flow fails, and the bot deletes the provisional token.

Hinweis

Wenn bei der Authentifizierung auf mobilen Geräten Probleme auftreten, stellen Sie sicher, dass Ihr JavaScript-SDK auf Version 1.4.1 oder höher aktualisiert wird.If you experience issues with authentication on mobile, ensure your Javascript SDK is update to version 1.4.1 or later.

BeispieleSamples

Beispielcode zum Anzeigen des bot-Authentifizierungsprozesses finden Sie unter:For sample code showing the bot authentication process see:

Weitere DetailsMore details

Ausführliche Exemplarische Vorgehensweisen zur Implementierung von bot-Authentifizierung für Azure Active Directory finden Sie unter:For detailed implementation walkthroughs for bot authentication targeting Azure Active Directory see: