Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Ihre Registerkarten-App mithilfe von Microsoft Graph erweitern, um zusätzliche Benutzerberechtigungen zu ermöglichen, z. B. zum Anzeigen des App-Benutzerprofils, zum Lesen von E-Mails und mehr. Ihre App muss nach Zustimmung des App-Benutzers bestimmte Berechtigungsbereiche anfordern, um die Zugriffstoken zu erhalten.
Diagrammbereiche wie User.Read oder Mail.Readgeben an, worauf Ihre App über ein Teams-Benutzerkonto zugreifen kann. Sie müssen Ihre Bereiche in der Autorisierungsanforderung angeben. In diesem Artikel werden Sie durch die Schritte zum Konfigurieren von Microsoft Graph-Berechtigungen und -Bereichen für Ihre Teams-Registerkarten-App geführt.
Konfigurieren von API-Berechtigungen in Microsoft Entra ID
Sie können zusätzliche Graph-Bereiche in Microsoft Entra ID für Ihre App konfigurieren. Hierbei handelt es sich um delegierte Berechtigungen, die von Apps verwendet werden, die angemeldeten Zugriff erfordern. Ein angemeldeter App-Benutzer oder Administrator muss ihnen zunächst zustimmen. Danach kann Ihre Registerkarten-App im Namen des angemeldeten Benutzers zustimmen, wenn sie Microsoft Graph aufruft.
Es wird empfohlen, delegierte Berechtigungen für den angemeldeten Benutzer zu verwenden. Wenn Ihre Anwendung keinen angemeldeten Benutzer benötigt, sollten Sie die Verwendung von Anwendungsberechtigungen in Betracht ziehen, die auch als Nur-App-Zugriffsszenario bezeichnet werden. Nur Administratoren können die Zustimmung für Anwendungsberechtigungen erteilen. Weitere Informationen finden Sie unter Anwendungsberechtigungen.
So konfigurieren Sie API-Berechtigungen
Öffnen Sie die App, die Sie im Azure-Portal registriert haben.
Wählen Sie im linken BereichAPI-Berechtigungenverwalten> aus.
Die Seite API-Berechtigungen wird angezeigt.
Wählen Sie "+ Berechtigung hinzufügen" aus, um Microsoft Graph-API-Berechtigungen hinzuzufügen.
Die Seite API-Berechtigungen anfordern wird angezeigt.
Wählen Sie Microsoft Graph aus.
Die Optionen für Graph-Berechtigungen werden angezeigt.
Wählen Sie Delegierte Berechtigungen oder Anwendungsberechtigungen aus, um die Liste der delegierten Berechtigungen bzw. Anwendungsberechtigungen anzuzeigen.
Wählen Sie die relevanten Berechtigungen für Ihre App und dann Berechtigungen hinzufügen aus.
Sie können auch den Berechtigungsnamen in das Suchfeld eingeben, um ihn zu finden.
Im Browser wird eine Meldung angezeigt, die besagt, dass die Berechtigungen aktualisiert wurden.
Die hinzugefügten Berechtigungen werden auf der Seite API-Berechtigungen angezeigt.
Sie haben Ihre App jetzt mit Microsoft Graph-Berechtigungen konfiguriert.
Konfigurieren der Authentifizierung für verschiedene Plattformen
Je nach Plattform oder Gerät, auf das Sie Ihre App richten möchten, kann eine zusätzliche Konfiguration erforderlich sein, z. B. Umleitungs-URIs, bestimmte Authentifizierungseinstellungen oder plattformspezifische Details.
Hinweis
- Wenn Ihrer Registerkarten-App keine Zustimmung des IT-Administrators erteilt wurde, müssen App-Benutzer ihre Zustimmung erteilen, wenn sie Ihre App zum ersten Mal auf einer anderen Plattform verwenden.
- Eine implizite Genehmigung ist nicht erforderlich, wenn einmaliges Anmelden (Single Sign-On, SSO) für eine Registerkarten-App aktiviert ist.
Sie können die Authentifizierung für mehrere Plattformen konfigurieren, solange die URL eindeutig ist.
So konfigurieren Sie die Authentifizierung für eine Plattform
Öffnen Sie die App, die Sie im Azure-Portal registriert haben.
Wählen Sie im linken Bereich Verwalten>Authentifizierung aus.
Die Seite Plattformkonfigurationen wird angezeigt.
Wählen Sie Plattform hinzufügen + aus.
Die Seite Plattformen konfigurieren wird angezeigt.
Wählen Sie die Plattform aus, die Sie für Ihre Registerkarten-App konfigurieren möchten. Sie können den Plattformtyp aus Web - oder Single-Page-Anwendung auswählen.
Sie können mehrere Plattformen für einen bestimmten Plattformtyp konfigurieren. Stellen Sie sicher, dass der Umleitungs-URI für jede von Ihnen konfigurierte Plattform eindeutig ist.
Die Seite "Web konfigurieren" wird angezeigt.
Hinweis
Die Konfigurationen unterscheiden sich je nach ausgewählter Plattform.
Geben Sie die Konfigurationsdetails für die Plattform ein.
- Geben Sie den Umleitungs-URI ein. Der URI sollte eindeutig sein.
- Geben Sie die URL für Front-Channel-Abmeldung ein.
- Wählen Sie die Token aus, die Microsoft Entra ID für Ihre App senden soll.
Wählen Sie Konfigurieren aus.
Die Plattform wird konfiguriert und auf der Seite Plattformkonfigurationen angezeigt.
Abrufen des Zugriffstokens für MS Graph
Sie müssen ein Zugriffstoken für Microsoft Graph erwerben. Dazu können Sie den Microsoft Entra On-Behalf-of(OBO)-Flow verwenden.
Die aktuelle Implementierung für einmaliges Anmelden (Single Sign-On, SSO) ist auf Berechtigungen auf Benutzerebene beschränkt, die nicht für Graph-Aufrufe verwendet werden können. Um die Berechtigungen und Bereiche zu erhalten, die für einen Graph-Aufruf erforderlich sind, müssen SSO-Apps einen benutzerdefinierten Webdienst implementieren, um das von der Teams JavaScript-Bibliothek empfangene Token gegen ein Token auszutauschen, das die erforderlichen Bereiche enthält. Sie können die Microsoft-Authentifizierungsbibliothek (MSAL) verwenden, um das Token von der Clientseite abzurufen.
Nachdem Sie Graph-Berechtigungen in Microsoft Entra ID konfiguriert haben, müssen Sie die Token-ID vom Teams-Client abrufen und dann mit dem serverseitigen Token austauschen.
Abrufen der Token-ID vom Teams-Client
Im Folgenden finden Sie ein Beispiel für das Abrufen der Token-ID vom Teams-Client:
microsoftTeams.authentication.getAuthToken().then((result) => {
//result contains the id token
console.log(result);
})
Tauschen Sie die Token-ID mit dem serverseitigen Token aus.
Im Folgenden finden Sie ein Beispiel für den OBO-Ablauf zum Abrufen des Zugriffstokens vom Teams-Client mithilfe von MSAL:
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(<"Client id">)
.WithClientSecret(<"Client secret">)
.WithAuthority($"https://login.microsoftonline.com/<"Tenant id">")
.Build();
try
{
var idToken = <"Client side token">;
UserAssertion assert = new UserAssertion(idToken);
List<string> scopes = new List<string>();
scopes.Add("https://graph.microsoft.com/User.Read");
// Acquires an access token for this application (usually a Web API) from the authority configured in the application.
var responseToken = await app.AcquireTokenOnBehalfOf(scopes, assert).ExecuteAsync();
return responseToken.AccessToken.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}
Wenn Sie auf Microsoft Graph-Daten zugreifen müssen, konfigurieren Sie Ihren serverseitigen Code wie folgt:
- Überprüfen des Zugriffstokens. Weitere Informationen finden Sie unter Überprüfen des Zugriffstokens.
- Initiieren Sie den OAuth 2.0 OBO-Fluss mit einem Aufruf an die Microsoft-Identitätsplattform, der das Zugriffstoken, einige Metadaten über den Benutzer und die Anmeldedaten der Registerkarten-App (ihre App-ID und ihren geheimen Clientschlüssel) enthält. Die Microsoft Identity Platform gibt ein neues Zugriffstoken zurück, das für den Zugriff auf Microsoft Graph verwendet werden kann.
- Rufen Sie Daten aus Microsoft Graph unter Verwendung des neuen Tokens ab.
- Verwenden Sie die Tokencacheserialisierung in MSAL.NET, um das neue Zugriffstoken bei Bedarf für mehrere zwischenzuspeichern.
Wichtig
- Als bewährte Sicherheitsmethode sollten Sie immer serverseitigen Code verwenden, um Microsoft Graph-Aufrufe oder andere Aufrufe zu tätigen , die die Übergabe eines Zugriffstokens erfordern. Dadurch wird verhindert, dass der Token abgefangen oder weitergegeben werden kann. Geben Sie das OBO-Token NICHT an den Client zurück, da der Client dann direkte Aufrufe an Microsoft Graph durchführen würde.
- Zwei separate Apps, die in Microsoft Entra ID registriert sind, erfordern individuelle Token für jede App. Verwenden Sie den OBO-Fluss , um die Kommunikation zwischen den Apps zu aktivieren.
- Verwenden Sie
notifySuccessdas Ergebnis nicht, um die Tokeninformationen an die übergeordnete Seite zurückzugeben. WirdlocalStorageverwendet, um das Token zu speichern und den Gegenstandsschlüssel übernotifySuccesszu übergeben.
Einwilligung einholen
Sie können die App-Zustimmung für Graph-Berechtigungen global vom Administrator oder individuell pro Benutzer erhalten.
Vom Administrator
Eine einfache Möglichkeit der Zustimmung im Namen einer Organisation besteht darin, die Zustimmung des Administrators einzuholen.
Vom Benutzer
Wenn Sie mithilfe der Authentifizierungsfunktion Microsoft Teams JavaScript Client Library (TeamsJS) eine zusätzliche Benutzereinwilligung anfordern, beachten Sie die folgenden Überlegungen:
Führen Sie die folgenden Schritte aus, um die SSO-Authentifizierung auf einer persönlichen Registerkarte zu implementieren:
Das mitgerufene
getAuthToken()Token muss serverseitig über den Microsoft Entra OBO-Fluss ausgetauscht werden, um Zugriff auf diese anderen Graph-APIs zu erhalten. Stellen Sie sicher, dass Sie den Microsoft Entra v2-Endpunkt für diesen Austausch verwenden.Wenn Sie zum ersten Mal versuchen, den Tokenaustausch für einen Benutzer auszuführen, wenn Microsoft Entra den Austausch von Token verweigert, kann dies daran liegen, dass der Benutzer nicht zugestimmt hat, Ihrer App die Berechtigung für die Daten des Benutzers zu erteilen. In diesen Fällen schlägt Ihr Exchange mit dem
invalid_grantODER-Fehlerinteraction_requiredfehl. Beispiele für invalid_grant Fehler sind, wenn die Zustimmung erforderlich ist oder auth_code, eine Assertion oder das Aktualisierungstoken abgelaufen, widerrufen, falsch formatiert oder nicht vorhanden ist. Beispiele für interaction_required sind, wenn eine mehrstufige Authentifizierung oder die Registrierung von Unternehmensgeräten erforderlich ist.Wenn der Austausch aufgrund des Fehlers
invalid_grantoderinteraction_requiredfehlschlägt, müssen Sie den Benutzer zur Zustimmung auffordern. Da Benutzerinteraktion nur vom Client aus erfolgen kann, muss der Server einen Hinweis an Ihre Client-App zurückgeben, dass die Zustimmung erforderlich ist. Sie können dann über die Benutzeroberfläche (UI) den App-Benutzer um eine weitere Zustimmung bitten. Die Benutzeroberfläche muss eine Schaltfläche enthalten, die ein Microsoft Entra-Zustimmungsdialogfeld auslöst.Um den Benutzer um Zustimmung für den Zugriff Ihrer App auf seine Daten zu bitten, müssen Sie die
prompt=consentEigenschaft in Ihren query-string-parameter für Microsoft Entra ID einschließen.- Verwenden Sie
?prompt=consent&scope={scopes}anstelle von?scope={scopes} - Stellen Sie sicher, dass die Eigenschaft alle Bereiche enthält, für die
{scopes}Sie den Benutzer auffordern. Zum BeispielMail.ReadoderUser.Read.
Informationen zum Behandeln der inkrementellen Zustimmung für die Registerkarten-App finden Sie unter Inkrementelle und dynamische Benutzereinwilligung.
- Verwenden Sie
Nachdem der App-Benutzer weitere Berechtigungen erteilt hat, versuchen Sie den OBO-Flow erneut, um Zugriff auf zusätzliche Graph-APIs zu erhalten. Weitere Informationen finden Sie unter Beispielcode für die SSO-Authentifizierung auf persönlichen Registerkarten von Teams .
Racebedingung beim Ausführen eines OBO-Aufrufs nach ungültiger Gewährungsausnahme
Wenn ein Benutzer der Microsoft Entra-Anwendung keine Zustimmung für diese Bereiche erteilt hat, schlägt Ihr OBO-Aufruf mit einem Fehler fehl invalid_grantinteraction_required. Dieser Fehler informiert Sie darüber, dass Sie den Benutzer um seine Zustimmung bitten müssen.
Wenn der Benutzer seine Zustimmung erteilt hat und Sie versuchen, sofort einen OBO-Anruf zu tätigen, gibt es manchmal eine Racebedingung zwischen der Weitergabe dieser Zustimmung durch Microsoft Entra ID und der stattfindenden OBO-Anfrage. Dies kann dazu führen, dass der OBO-Anruf mit denselben invalid_grantinteraction_required Fehlern fehlschlägt.
Wenn Ihre Anwendung dieses Verhalten nicht kennt, fordert sie den Benutzer möglicherweise mehrmals um Zustimmung an. Die bewährte Methode besteht darin, einen sinnvollen Mechanismus für Warte- und Wiederholungsversuche zu erstellen, um diese suboptimale Benutzererfahrung zu vermeiden.
Der Warte-und-Wiederholungs-Mechanismus muss nachverfolgen, ob ein Benutzer den erforderlichen Bereichen zugestimmt hat. Wenn ein API-Aufruf, der eine OBO-Anforderung enthält, mit den oben genannten Fehlern fehlschlägt, der Benutzer aber bereits zugestimmt hat, vermeiden Sie es, dem Benutzer die Zustimmungsaufforderung anzuzeigen. Warten Sie stattdessen einige Zeit, bevor Sie den API-Aufruf wiederholen. Normalerweise sendet Microsoft Entra ID die Zustimmung innerhalb von drei bis fünf Sekunden. In einer unserer Beispielanwendungen wiederholen wir bis zu drei Wiederholungsversuche mit doppelter Wartezeit zwischen jedem Wiederholungsversuch, beginnend mit einer Wartezeit von einer Sekunde.
Wenn der OBO-Flow nach drei bis fünf Versuchen immer noch fehlschlägt, hat der Benutzer möglicherweise nicht allen erforderlichen Bereichen zugestimmt, und Sie müssen ihn möglicherweise erneut auffordern, zuzustimmen.
Durch diesen Ansatz wird die Wahrscheinlichkeit verringert, dass Benutzer mehrmals zur Zustimmung aufgefordert werden.
Codebeispiel
| Beispielname | Beschreibung | C# | Node.js |
|---|---|---|---|
| Registerkarten Microsoft Entra SSO | Diese Beispiel-App zeigt eine Registerkarte mit Microsoft Entra SSO und verwendet OBO Flow zum Aufrufen von Graph-APIs. | View | Anzeigen |