Verwenden externer OAuth-Anbieter
Hinweis
Dieses Thema enthält Version 2.0.x der Microsoft Teams JavaScript-Clientbibliothek (TeamsJS). Wenn Sie eine frühere Version verwenden, finden Sie in der Übersicht über die TeamsJS-Bibliothek Anleitungen zu den Unterschieden zwischen den neuesten Versionen von TeamsJS und früheren Versionen.
Sie können externe OAuth-Anbieter oder Drittanbieter wie Google, GitHub, LinkedIn und Facebook mithilfe der aktualisierten authenticate()
API unterstützen:
function authenticate(authenticateParameters: AuthenticatePopUpParameters): Promise<string>
Fügen Sie der API die authenticate()
folgenden Werte hinzu, um externe OAuth-Anbieter zu unterstützen:
-
isExternal
Parameter - Drei Platzhalterwerte im vorhandenen
url
Parameter
Die folgende Tabelle enthält eine Liste der authenticate()
API-Parameter (AuthenticatePopUpParameters
) und -Funktionen sowie deren Beschreibungen:
Parameter | Beschreibung |
---|---|
isExternal |
Der Parametertyp ist Boolean, was angibt, dass das Authentifizierungsfenster in einem externen Browser geöffnet wird. |
height |
Die bevorzugte Höhe für das Pop-up. Der Wert kann ignoriert werden, wenn er außerhalb der akzeptablen Grenzen liegt. |
url |
Die URL des Drittanbieter-App-Servers für das Authentifizierungs-Popup mit den folgenden drei Parameterplatzhaltern: - oauthRedirectMethod : Übergeben des Platzhalters in {} . Die Teams-Plattform ersetzt diesen Platzhalter durch einen Deep-Link oder eine Webseite, die den App-Server aktualisiert, wenn der Anruf von einer mobilen Plattform stammt.- authId : UUID (Universal Unique identifer) ersetzt diesen Platzhalter. Der App-Server verwendet es, um die Sitzung zu verwalten.- hostRedirectUrl : Pass-Platzhalter in {} . Die aktuelle Plattform und der Client ersetzen diesen Platzhalter durch eine Umleitungs-URL, die den Benutzer nach Abschluss der Authentifizierung an den richtigen Client umleitet. |
width |
Die bevorzugte Breite für das Pop-up. Der Wert kann ignoriert werden, wenn er außerhalb der akzeptablen Grenzen liegt. |
Hinweis
Der authID
Parameter ist für die Dauer der Authentifizierungssitzung gültig, die ein Standardtimeout von 120 Sekunden aufweist.
Weitere Informationen zu Parametern finden Sie unter Authenticate (AuthenticatePopUpParameters) -Funktion.
Authentifizierung zu externen Browsern hinzufügen
Das folgende Bild zeigt den Ablauf zum Hinzufügen der Authentifizierung zu externen Browsern:
So fügen Sie die Authentifizierung zu externen Browsern hinzu
Initiieren Sie den externen Authentifizierungs- und Anmeldeprozess. Die Drittanbieter-App ruft die TeamsJS-Funktion
authentication.authenticate
auf, dieisExternal
auf true festgelegt ist, um den externen Authentifizierungs-Anmeldeprozess zu initiieren.Das übergebene
url
enthält Platzhalter für{authId}
,{oauthRedirectMethod}
und{hostRedirectUrl}
.authentication.authenticate({ url: `${window.location.origin}/auth-start?oauthRedirectMethod={oauthRedirectMethod}&authId={authId}&hostRedirectUrl={hostRedirectUrl}&googleId=${googleId}`, isExternal: true }).then((result) => { this.getGoogleServerSideToken(result); }).catch((reason) => { console.log("failed" + reason); reject(reason); })
Die Teams-Clients öffnen die URL in einem externen Browser, nachdem die Platzhalter für
oauthRedirectMethod
,authId
undhostRedirectUrl
automatisch durch geeignete Werte ersetzt wurden.Beispiel
https://3p.app.server/auth?oauthRedirectMethod=deeplink&authId=1234567890&hostRedirectUrl=msteams://teams.microsoft.com/l/auth-callback?authId=1234567890&result={result}
Der App-Server des Drittanbieters antwortet. Der Drittanbieter-App-Server empfängt und speichert mit
url
den folgenden drei Abfrageparametern:Parameter Beschreibung oauthRedirectMethod
Gibt an, wie die Drittanbieter-App die Antwort der Authentifizierungsanforderung mit einem der beiden Werte zurück an den Client senden muss: Deep Link oder Page. authId
Die Anforderungs-ID, die Teams für diese spezifische Authentifizierungsanforderung erstellt, die über einen Deep Link an den Client zurückgesendet werden muss. hostRedirectUrl
Der Deep-Link enthält das URL-Schema des initiierenden Clients, der nach der Authentifizierung umgeleitet werden soll. Tipp
Die App kann ,
oauthRedirectMethod
undhostRedirectUrl
im OAuth-Abfrageparameterstate
marshallenauthId
, während die Anmelde-URL für OAuthProvider generiert wird. enthältstate
die übergebenenauthId
,oauthRedirectMethod
undhostRedirectUrl
, wenn OAuthProvider an den Server umleitet und die App die Werte verwendet, um die Authentifizierungsantwort zurück an den initiierenden Client zu senden, wie in Schritt 6 beschrieben.Der App-Server des Drittanbieters leitet an den angegebenen
url
um. Der App-Server des Drittanbieters leitet im externen Browser zur Authentifizierungsseite des OAuth-Anbieters um. istredirect_uri
eine dedizierte Route auf dem App-Server. Sie könnenredirect_uri
in der Entwicklungskonsole des OAuth-Anbieters als statisch registrieren, die Parameter müssen über das Zustandsobjekt gesendet werden.Beispiel
https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https://3p.app.server/authredirect&state={"authId":"…","oauthRedirectMethod":"…","hostRedirectUrl":"_"}&client_id=… &response_type=code&access_type=offline&scope= …
Melden Sie sich beim externen Browser an. Die OAuth-Anbieter leiten mit dem Authentifizierungscode
redirect_uri
und dem Zustandsobjekt zurück an die um.Der App-Server eines Drittanbieters verarbeitet die Antwort und überprüft
oauthRedirectMethod
, die vom externen OAuth-Anbieter im Zustandsobjekt zurückgegeben wird, um zu bestimmen, ob die Antwort über den Deep-Link für den Authentifizierungsrückruf oder über eine Webseite zurückgegeben werden muss, die aufruftnotifySuccess()
.if (state.oauthRedirectMethod === 'deeplink') { const clientRedirectUrl: string = state.hostRedirectUrl.replace('{result}', req.query.code) return res.redirect(clientRedirectUrl) } else { // continue redirecting to a web-page that will call notifySuccess() – usually this method is used in Teams-Web …
Im mobilen Teams-Client führt die änderung
hostRedirectUrl
beispielsweise zu folgendem Ergebnis:return res.redirect(`msteams://teams.microsoft.com/l/auth-callback?authId=${state.authId}&result=${req.query.code}`)
Der bereitgestellte Wert von
hostRedirectUrl
hängt vom Client ab, der den externen Authentifizierungsflow initiiert.Teams ruft den Erfolgsrückruf auf und sendet das Ergebnis (Authentifizierungscode) an die Drittanbieter-App. Die App empfängt den Code im Erfolgsrückruf und verwendet den Code, um das Token und dann die Benutzerinformationen abzurufen und die Benutzeroberfläche zu aktualisieren.
successCallback: function (result) { … }