Microsoft Teams-Authentifizierungs Fluss für RegisterkartenMicrosoft Teams authentication flow for tabs

Hinweis

Damit die Authentifizierung für Ihre Registerkarte auf mobilen Clients funktioniert, müssen Sie sicherstellen, dass Sie mindestens die Version 1.4.1 von Microsoft Teams JavaScript SDK verwenden.For authentication to work for your tab on mobile clients, you need to ensure you're using at least the 1.4.1 version of the Teams JavaScript SDK.

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. Der Authentifizierungs Fluss für Registerkarten und Bots ist ein wenig anders, da Registerkarten sehr ähnlich zu Websites sind, sodass Sie OAuth 2,0 direkt verwenden können. Bots sind nicht und müssen ein paar Dinge unterschiedlich 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; bots are not and must do a few things differently, but the core concepts are identical.

ein Beispiel zur Veranschaulichung des Authentifizierungs Flusses für Registerkarten und Bots mithilfe von Node mithilfe des impliziten Grant-Typs OAuth 2,0.for an example that demonstrates authentication flow for tabs and bots using Node using the OAuth 2.0 implicit grant type.

Tab-Authentifizierungs-Sequenzdiagramm

  1. Der Benutzer interagiert mit dem Inhalt auf der Registerkarte Konfiguration oder Inhaltsseite, häufig eine Schaltfläche mit der Bezeichnung "Anmelden" oder "Anmelden".The user interacts with the content on the tab configuration or content page, commonly a button labeled "Sign in" or "Log in".
  2. Die Registerkarte erstellt die URL für Ihre Authentifizierungs Startseite, optional mithilfe von Informationen aus URL-Platzhaltern oder durch Aufrufen microsoftTeams.getContext() der Teams-Client-SDK-Methode, um die Authentifizierungs Erfahrung für den Benutzer zu rationalisieren.The tab constructs the URL for its auth start page, optionally using information from URL placeholders or by calling microsoftTeams.getContext() Teams client SDK method to streamline the authentication experience for the user. Wenn der login_hint Parameter beispielsweise bei der Authentifizierung mit Azure AD auf die e-Mail-Adresse des Benutzers festgelegt ist, muss sich der Benutzer möglicherweise nicht mehr anmelden, wenn er dies kürzlich getan hat, da Azure Ad die zwischengespeicherten Anmeldeinformationen des Benutzers nach Möglichkeit verwenden wird: das Popup blinkt kurz und wird dann ausgeblendet.For example, when authenticating with Azure AD, if the login_hint parameter is set to the user's email address, the user may not even have to sign in if they have done so recently, because Azure AD will use the user's cached credentials if possible: the popup will flash briefly and then disappear.
  3. Anschließend ruft die Registerkarte microsoftTeams.authentication.authenticate() die-Methode auf successCallback und failureCallback registriert die Funktionen und.The tab then calls the microsoftTeams.authentication.authenticate() method and registers the successCallback and failureCallback functions.
  4. Teams öffnet die Startseite in einem IFRAME in einem Popupfenster.Teams opens the start page in an iframe in a pop-up window. Auf der Startseite werden state zufällige Daten generiert, für die zukünftige Validierung gespeichert und an den /authorize Endpunkt des Identitätsanbieters umgeleitet (Beispiels https://login.microsoftonline.com/<tenant ID>/oauth2/authorize Weise für Azure AD).The start page generates random state data, saves it for future validation, and redirects to the identity provider's /authorize endpoint such as https://login.microsoftonline.com/<tenant ID>/oauth2/authorize for Azure AD. Ersetzen <tenant id> Sie durch ihre eigene Mandanten-ID (Context. TID).Replace <tenant id> with your own tenant id (context.tid).
    • Wie bei anderen Anwendungs Authentifizierungs Bewegungen in Microsoft Teams muss sich die Startseite in einer Domäne befinden, validDomains die sich in der 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 its validDomains list, and on the same domain as the post-login redirect page.
    • Wichtig: der implizite Grant-Fluss von OAuth 2,0 state Ruft einen Parameter in der Authentifizierungsanforderung ab, der eindeutige Sitzungsdaten enthält, um einen Fälschungs Angriff auf standortübergreifendes anfordernzu verhindern.IMPORTANT: The OAuth 2.0 implicit grant flow calls for a state parameter in the authentication request which contains unique session data to prevent a cross-site request forgery attack. In den folgenden Beispielen wird eine zufällig generierte GUID für die state Daten verwendet.The examples below use a randomly-generated GUID for the state data.
  5. Der Benutzer meldet sich auf der Website des Anbieters an und erteilt Zugriff auf die Registerkarte.On the provider's site, the user signs in and grants access to the tab.
  6. Der Anbieter führt den Benutzer zur Umleitungsseite der Registerkarte OAuth 2,0 mit einem Zugriffstoken.The provider takes the user to the tab's OAuth 2.0 redirect page with an access token.
  7. Auf der Registerkarte wird überprüft state , ob der zurückgegebene Wert mit microsoftTeams.authentication.notifySuccess()dem zuvor gespeicherten übereinstimmt, successCallback und Aufrufe, die wiederum die in Schritt 3 registrierte Funktion aufrufen.The tab checks that the returned state value matches what was saved earlier, and calls microsoftTeams.authentication.notifySuccess(), which in turn calls the successCallback function registered in step 3.
  8. Das Popupfenster wird von Microsoft Teams geschlossen.Teams closes the pop-up window.
  9. Auf der Registerkarte wird entweder die Konfigurationsbenutzeroberfläche angezeigt oder der Inhalt der Registerkarten aktualisiert oder neu geladen, je nachdem, von wo aus der Benutzer gestartet hat.The tab either displays configuration UI or refreshes or reloads the tabs content, depending on where the user started from.

Behandeln des Registerkarten Kontexts als HinweiseTreat tab context as hints

Obwohl der Registerkartenkontext nützliche Informationen für den Benutzer bereitstellt, verwenden Sie diese Informationen nicht, um den Benutzer zu authentifizieren, unabhängig davon, ob Sie ihn als URL-Parameter microsoftTeams.getContext() zu ihrer Registerkarten-Inhalts-URL oder durch Aufrufen der Funktion im Microsoft Teams-Client-SDK erhalten.Although the tab context provides useful information regarding the user, don't use this information to authenticate the user whether you get it as URL parameters to your tab content URL or by calling the microsoftTeams.getContext() function in the Microsoft Teams client SDK. Ein böswilliger Akteur könnte Ihre Registerkarteninhalts-URL mit seinen eigenen Parametern aufrufen, und eine Webseite, die Microsoft Teams imitiert, kann die URL Ihres Registerkarteninhalts in einen iframe laden getContext() und eigene Daten an die Funktion zurückgeben.A malicious actor could invoke your tab content URL with its own parameters, and a web page impersonating Microsoft Teams could load your tab content URL in an iframe and return its own data to the getContext() function. Sie sollten die identitätsbezogenen Informationen im Registerkartenkontext lediglich als Hinweise behandeln und diese vor der Verwendung validieren.You should treat the identity-related information in the tab context simply as hints and validate them before use.

BeispieleSamples

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

Weitere DetailsMore details

Eine ausführliche Implementierungs Exemplarische Vorgehensweise für die Registerkarten Authentifizierung für Azure Active Directory finden Sie unter:For a detailed implementation walkthrough for tab authentication targeting Azure Active Directory see: