Konvertieren einer Einzelmandanten-App in eine mehrinstanzenfähige App in Microsoft Entra ID
Wenn Sie vielen Organisationen eine SaaS-Anwendung (Software-as-a-Service) anbieten, können Sie Ihre Anwendung so konfigurieren, dass Anmeldungen von beliebigen Microsoft Entra-Mandanten akzeptiert werden, indem Sie sie in eine mehrinstanzenfähige App umwandeln. Benutzer eines Microsoft Entra-Mandanten können sich bei Ihrer Anwendung anmelden, nachdem sie zugestimmt haben, ihr Konto mit Ihrer Anwendung zu verwenden.
Für vorhandene Apps mit einem eigenen Kontosystem (oder Anmeldedaten anderer Cloudanbieter) sollten Sie Anmeldecode über OAuth2, OpenID Connect oder SAML (Security Assertion Markup Language) hinzufügen und eine Schaltfläche Bei Microsoft anmelden in Ihre Anwendung einfügen.
In dieser Schrittanleitung führen Sie die vier Schritte aus, mit denen Sie eine Einzelmandanten-App in eine mehrinstanzenfähige Microsoft Entra-App umwandeln:
- Aktualisieren der Anwendungsregistrierung, sodass sie mehrinstanzenfähig ist
- Aktualisieren des Code, um Anforderungen an den
/common
-Endpunkt zu senden - Aktualisieren des Codes zum Verarbeiten mehrerer Ausstellerwerte
- Interpretieren der Benutzer- und Administratorzustimmung und Vornehmen der entsprechenden Codeänderungen
Wenn Sie versuchen möchten, eines unserer Beispiele zu verwenden, siehe Erstellen einer Mehrinstanzen-SaaS-Webanwendung, die Microsoft Graph mithilfe von Microsoft Entra ID und OpenID Connect aufruft
Voraussetzungen
- Ein Microsoft Entra-Mandant. Wenn Sie keines haben, können Sie eines in unserer Schnellstartanleitung: Erstellen eines neuen Mandanten in Microsoft Entra ID erstellen
- Eine auf der Microsoft Identity Platform registrierte Anwendung. Wenn Sie keine haben, können Sie eine in unserer Schnellstartanleitung: Registrieren einer Anwendung auf der Microsoft Identity Platform erstellen.
- Vertrautheit mit Mandanten in Microsoft Entra ID.
- Eine integrierte Entwicklungsumgebung (Integrated Development Environment, IDE), mit der Sie Ihren Anwendungscode bearbeiten können.
Aktualisieren der Registrierung, sodass sie mehrinstanzenfähig ist
Standardmäßig gelten Web-App-/API-Registrierungen bei ihrer Erstellung in Microsoft Entra ID für einen einzelnen Mandanten. Um die Registrierung mehrinstanzenfähig zu machen, melden Sie sich beim Microsoft Entra Admin Center an, und wählen Sie die App-Registrierung aus, die Sie aktualisieren möchten. Wählen Sie bei geöffneter App-Registrierung den Authentifizierungsbereich aus, und navigieren Sie zum Abschnitt Unterstützte Kontotypen. Ändern Sie die Einstellung in Konten in einem beliebigen Organisationsverzeichnis.
Wenn eine Einzelmandantenanwendung im Microsoft Entra Admin Center erstellt wird, ist eines der Elemente, die auf der Seite Übersicht aufgeführt sind, der Anwendungs-ID-URI. Sie stellt eine Möglichkeit dar, mit der eine Anwendung in Protokollnachrichten identifiziert wird, und sie kann jederzeit hinzugefügt werden. Der App-ID-URI für Einzelmandanten-Apps kann innerhalb dieses Mandanten global eindeutig sein. Im Gegensatz dazu muss sie für mehrinstanzenfähige Apps global eindeutig sein, damit sichergestellt wird, dass Microsoft Entra ID die App über alle Mandanten hinweg finden kann.
Wenn der Name Ihres Mandanten beispielsweise contoso.onmicrosoft.com
lautet, wäre ein gültiger App-ID-URI https://contoso.onmicrosoft.com/myapp
. Wenn der App-ID-URI nicht diesem Muster folgt, schlägt das Festlegen einer Anwendung als mehrinstanzenfähig fehl.
Aktualisieren des Codes zum Senden von Anforderungen an /common
Bei einer mehrinstanzenfähigen Anwendung kann die Anwendung nicht sofort erkennen, von welchem Mandanten Benutzer*innen stammen, sodass Anforderungen nicht an den Endpunkt eines Mandanten gesendet werden können. Stattdessen werden Anforderungen an einen gemeinsamen Endpunkt (https://login.microsoftonline.com/common
) gesendet, der alle Microsoft Entra-Mandanten bedient und als zentraler Hub fungiert, der Anforderungen verarbeitet.
Öffnen Sie Ihre App in Ihrer IDE, bearbeiten Sie Ihren Code und ändern Sie den Wert für Ihre Mandanten-ID in /common
. Dieser Endpunkt ist selbst kein Mandant oder Aussteller. Wenn Microsoft Identity Platform Anforderungen am /common
-Endpunkt empfängt, werden die Benutzer*innen angemeldet. Dabei wird auch der Mandant der Benutzer*innen ermittelt. Dieser Endpunkt funktioniert mit allen von Microsoft Entra ID unterstützten Authentifizierungsprotokollen: OpenID Connect, OAuth 2.0, SAML 2.0 und WS-Verbund.
Die Anmeldeantwort an die Anwendung enthält dann ein Token, das den Benutzer darstellt. Anhand des Ausstellerwerts im Token erfährt eine Anwendung, von welchem Mandanten der Benutzer stammt. Wenn vom /common
-Endpunkt eine Antwort zurückgegeben wird, entspricht der Ausstellerwert im Token dem Mandanten der Benutzer*innen.
Hinweis
Es gibt in Wirklichkeit zwei autoritative Stellen für mehrinstanzenfähige Anwendungen:
https://login.microsoftonline.com/common
für Anwendungen, die Konten in einem beliebigen Organisationsverzeichnis (beliebiges Microsoft Entra-Verzeichnis) und persönliche Microsoft-Konten (z. B. Skype, Xbox) verarbeiten.https://login.microsoftonline.com/organizations
für Anwendungen, die Konten in einem beliebigen Organisationsverzeichnis (beliebiges Microsoft Entra-Verzeichnis) verarbeiten:
In den Erläuterungen in diesem Dokument wird common
verwendet. Sie können jedoch auch organizations
einsetzen, wenn Ihre Anwendung keine persönlichen Microsoft-Konten unterstützt.
Aktualisieren des Codes zum Verarbeiten mehrerer Ausstellerwerte
Webanwendungen und Web-APIs empfangen und überprüfen Token von Microsoft Identity Platform. Native Anwendungen überprüfen Zugriffstoken nicht und müssen sie als nicht transparent behandeln. Sie fordern stattdessen Token von Microsoft Identity Platform an und senden die empfangenen Token zur Überprüfung an APIs.
Mehrinstanzenfähige Anwendungen müssen beim Überprüfen eines Tokens weitere Überprüfungen durchführen. Eine mehrinstanzenfähige Anwendung ist so konfiguriert, dass sie Schlüsselmetadaten der Schlüssel-URLs /organizations
oder /common
nutzt. Die Anwendung muss überprüfen, ob die Eigenschaft issuer
in den veröffentlichten Metadaten mit dem Anspruch iss
im Token übereinstimmt, zusätzlich zur üblichen Überprüfung, ob der Anspruch iss
im Token den Anspruch der Mandanten-ID (tid
) enthält. Weitere Informationen finden Sie unter Überprüfen von Token.
Interpretieren der Benutzer- und Administratorzustimmung und Vornehmen der entsprechenden Codeänderungen
Damit sich ein Benutzer bei einer Anwendung in Microsoft Entra ID anmelden kann, muss die Anwendung im Mandanten des Benutzers dargestellt werden. Die Organisation kann dann beispielsweise eindeutige Richtlinien anwenden, wenn sich Benutzer ihres Mandanten bei der Anwendung anmelden. Für eine Einzelmandantenanwendung kann man die Registrierung über das Microsoft Entra Admin Center verwenden.
Bei einer mehrinstanzenfähigen Anwendung erfolgt die erste Registrierung für die Anwendung in dem Microsoft Entra-Mandanten, der vom Entwickler verwendet wurde. Wenn sich ein Benutzer von einem anderen Mandanten zum ersten Mal bei der Anwendung anmeldet, fordert Microsoft Entra ID ihn auf, den von der Anwendung angeforderten Berechtigungen zuzustimmen. Wenn er zustimmt, wird eine Darstellung der Anwendung, die als Dienstprinzipal bezeichnet wird, im Mandanten des Benutzers erstellt, und die Anmeldung kann fortgesetzt werden. Im Verzeichnis, das die Zustimmung des Benutzers zur Anwendung erfasst, wird auch eine Delegierung erstellt. Ausführliche Informationen zu Anwendungsobjekten und Dienstprinzipalobjekten der Anwendung und deren Beziehungen zueinander finden Sie unter Anwendungsobjekte und Dienstprinzipalobjekte.
Die von der Anwendung angeforderten Berechtigungen wirken sich auf den Zustimmungsprozess aus. Die Microsoft Identity Platform unterstützt zwei Arten von Berechtigungen:
- Delegiert: Diese Berechtigung gewährt einer Anwendung die Möglichkeit, für einen Teil der Funktionen, die der Benutzer ausführen kann, als angemeldeter Benutzer zu agieren. Sie können einer Anwendung z.B. die delegierte Berechtigung zum Lesen des Kalenders des angemeldeten Benutzers erteilen.
- Nur App: Diese Berechtigung wird der Identität der Anwendung direkt gewährt. Beispielsweise können Sie einer Anwendung die nur für die App geltende Berechtigung zum Lesen der Liste der Benutzer in einem Mandanten erteilen, unabhängig davon, wer sich bei der Anwendung angemeldet hat.
Reguläre Benutzer können einigen Berechtigungen zustimmen, während andere die Zustimmung eines Mandantenadministrators erfordern.
Weitere Informationen zur Benutzer- und Administratoreinwilligung finden Sie unter Konfigurieren des Workflows für die Administratoreinwilligung.
Administratorzustimmung
Nur für die App geltende Berechtigungen erfordern immer die Zustimmung eines Mandantenadministrators. Wenn die Anwendung eine nur für die App geltende Berechtigung anfordert und ein Benutzer versucht, sich bei der Anwendung anzumelden, wird eine Fehlermeldung angezeigt, die besagt, dass der Benutzer nicht zustimmen kann.
Bestimmte delegierte Berechtigungen erfordern ebenfalls die Zustimmung eines Mandantenadministrators. Beispielsweise erfordert die Funktion zum Zurückschreiben in Microsoft Entra ID als der angemeldete Benutzer die Zustimmung eines Mandantenadministrators. Wenn normale Benutzer*innen versuchen, sich bei einer Anwendung anzumelden, die eine delegierte Berechtigung anfordert, für die die Zustimmung durch Administrator*innen erforderlich ist, wird in Ihrer App ein Fehler angezeigt, wie es auch bei nur für die App geltenden Berechtigungen der Fall ist. Der Entwickler, der die Ressource veröffentlicht hat, bestimmt, ob eine Berechtigung eine Administratorzustimmung erfordert. Sie finden diese Informationen in der Dokumentation der Ressource. In der Berechtigungsdokumentation für die Microsoft Graph-API ist angegeben, für welche Berechtigungen die Zustimmung des Administrators erforderlich ist.
Wenn Ihre Anwendung Berechtigungen nutzt, die eine Administratoreinwilligung erfordern, sollten Sie eine Schaltfläche oder einen Link hinzufügen, damit die Administrator*innen die Aktion initiieren können. Die Anforderung, die die Anwendung für diese Aktion sendet, ist die reguläre OAuth2/OpenID Connect-Autorisierungsanforderung, die zusätzlich den Abfragezeichenfolgen-Parameter prompt=consent
enthält. Nachdem die Administrator*innen eingewilligt haben und der Dienstprinzipal im Mandanten der Kundschaft erstellt wurde, ist für nachfolgende Anmeldeanforderungen der prompt=consent
-Parameter nicht mehr erforderlich. Da der Administrator die angeforderten Berechtigungen genehmigt hat, werden keine anderen Benutzer im Mandanten zur Zustimmung aufgefordert.
Ein Mandantenadministrator kann die Funktion deaktivieren, dass reguläre Benutzer Anwendungen zustimmen. Wenn diese Funktion deaktiviert ist, ist die Zustimmung des Administrators immer erforderlich, damit die Anwendung im Mandanten verwendet werden kann. Sie können Ihre Anwendung mit deaktivierter Endbenutzerzustimmung im Microsoft Entra Admin Center testen. Aktivieren Sie in Enterprise-Anwendungen>Zustimmung und Berechtigungen die Option Benutzereinwilligung nicht zulassen.
Der Parameter prompt=consent
kann auch von Anwendungen verwendet werden, die Berechtigungen anfordern, die keine Administratoreinwilligung erfordern. Ein beispielhafter Anwendungsfall ist eine Anwendung, die erfordert, dass sich der Administrator des Mandanten einmal „registriert“ und danach keine anderen Benutzer zur Einwilligung aufgefordert werden.
Wenn für eine Anwendung die Zustimmung des Administrators erforderlich ist und sich ein Administrator anmeldet, ohne dass der Parameter prompt=consent
gesendet wird, gilt die erfolgreiche Zustimmung des Administrators nur für sein Benutzerkonto. Reguläre Benutzer können sich nicht anmelden und der Anwendung nicht zustimmen. Diese Funktion ist sinnvoll, wenn Sie dem Mandantenadministrator die Möglichkeit geben möchten, Ihre Anwendung zu untersuchen, bevor Sie anderen Benutzern Zugriff gewähren.
Zustimmung und Anwendungen mit mehreren Ebenen
Ihre Anwendung weist möglicherweise mehrere Ebenen auf, die in Microsoft Entra ID jeweils durch eine eigene Registrierung dargestellt werden. Beispielsweise eine native Anwendung, die eine Web-API aufruft, oder eine Webanwendung, die eine Web-API aufruft. In beiden Fällen fordert der Client (native App oder Web-App) Berechtigungen an, um die Ressource (Web-API) aufzurufen. Damit dem Client erfolgreich die Zustimmung im Mandanten eines Kunden erteilt werden kann, müssen alle Ressourcen, für die Berechtigungen angefordert werden, bereits im Mandanten des Kunden vorhanden sein. Wenn diese Bedingung nicht erfüllt ist, gibt Microsoft Entra ID einen Fehler zurück, der besagt, dass die Ressource zuerst hinzugefügt werden muss.
Mehrere Ebenen in einem einzelnen Mandanten
Wenn die logische Anwendung aus zwei oder mehr Anwendungsregistrierungen besteht, z. B. separate Clients und Ressourcen, kann dies zu Problemen führen. Wie sorgen Sie beispielsweise zuerst dafür, dass die Ressource im externen Mandanten vorhanden ist? Microsoft Entra ID behandelt diesen Fall, indem der Client und die Ressource, der zugestimmt werden soll, in einem einzigen Schritt aktiviert werden. Der Benutzer sieht die Gesamtsumme der Berechtigungen, die sowohl vom Client als auch von der Ressource auf der Seite „Zustimmung“ angefordert werden. Um dieses Verhalten zu ermöglichen, muss die Anwendungsregistrierung der Ressource die App-ID des Clients als knownClientApplications
im Anwendungsmanifest enthalten. Zum Beispiel:
"knownClientApplications": ["12ab34cd-56ef-78gh-90ij11kl12mn"]
Das Multitenant-Anwendungsbeispiel bietet eine Demonstration. Die folgende Abbildung zeigt eine Übersicht über die Zustimmung für eine Mehrparteien-App, die in einem einzigen Mandanten registriert wurde.
Mehrere Ebenen in mehreren Mandanten
Ein ähnlicher Fall tritt ein, wenn die verschiedenen Ebenen einer Anwendung in verschiedenen Mandanten registriert sind. Betrachten Sie z.B. die Erstellung einer nativen Clientanwendung, die die Exchange Online-API aufruft. Um die native Anwendung zu entwickeln und sie später im Mandanten eines Kunden auszuführen, muss der Exchange Online-Dienstprinzipal vorhanden sein. Hier müssen der Entwickler und der Kunde Exchange Online erwerben, damit der Dienstprinzipal in seinen Mandanten erstellt wird.
Falls die API von einer anderen Organisation als Microsoft erstellt wurde, muss der Entwickler der API für Kunden eine Möglichkeit bieten, der Anwendung in den Mandanten der Kunden die Zustimmung zu erteilen. Der empfohlene Entwurf gilt für externe Entwickler, um die API so zu erstellen, dass sie auch als Webclient zur Implementierung der Registrierung fungieren kann. Sie haben folgende Möglichkeiten:
- Führen Sie die Schritte in den vorherigen Abschnitten durch, um sicherzustellen, dass die API die Registrierungs-/Codeanforderungen für mehrinstanzenfähige Anwendungen erfüllt.
- Stellen Sie neben der Bereitstellung der API-Bereiche/-Rollen sicher, dass die Registrierung die (standardmäßig bereitgestellte) Berechtigung „Anmelden und Benutzerprofil lesen“ beinhaltet.
- Implementieren Sie eine Anmelde-/Registrierungsseite im Webclient gemäß den Schritten unter Administratorzustimmung.
- Nach der Zustimmung des Benutzers bei der Anwendung werden die Dienstprinzipal- und Zustimmungsdelegierungsverknüpfungen in dessen Mandanten erstellt, und die systemeigene Anwendung kann Tokens für die API abrufen.
Die folgende Abbildung zeigt eine Übersicht über die Zustimmung für eine App mit mehreren Ebenen, die in verschiedenen Mandanten registriert wurde.
Widerrufen der Zustimmung
Benutzer und Administratoren können die Zustimmung zu Ihrer Anwendung jederzeit widerrufen:
- Benutzer widerrufen den Zugriff auf einzelne Anwendungen, indem sie die jeweiligen Anwendungen aus der Liste Zugriffspanel – Anwendungen entfernen.
- Administratoren widerrufen den Zugriff auf Anwendungen, indem sie diese über den Abschnitt Unternehmensanwendungen des Microsoft Entra Admin Centers entfernen. Wählen Sie die Anwendung aus, und navigieren Sie zur Registerkarte Berechtigungen , um den Zugriff zu widerrufen.
Wenn Administrator*innen einer Anwendung für alle Benutzer*innen in einem Mandanten ihre Einwilligung geben, können Benutzer*innen den Zugriff nicht einzeln widerrufen. Nur der Administrator kann den Zugriff widerrufen, und dies nur für die gesamte Anwendung.
Mehrinstanzenfähige Anwendungen und Zwischenspeichern von Zugriffstoken
Mehrinstanzenfähige Anwendungen können auch Zugriffstoken abrufen, um APIs aufzurufen, die von Microsoft Entra ID geschützt sind. Ein häufiger Fehler bei der Verwendung der Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL) mit einer mehrinstanzenfähigen Anwendung ist, zuerst ein Token für Benutzer*innen mithilfe von /common
anzufordern, eine Antwort zu erhalten und dann ein weiteres Token für dieselben Benutzer*innen ebenfalls mit /common
anzufordern. Da die Antwort von Microsoft Entra ID von einem Mandanten stammt (und nicht von /common
), speichert MSAL das Token als Token vom Mandanten zwischen. Beim nachfolgenden Aufruf von /common
zum Abrufen eines Zugriffstokens für die Benutzer*innen wird der Cacheeintrag übersehen, und die Benutzer*innen werden aufgefordert, sich erneut anzumelden. Um zu vermeiden, dass Cacheeinträge übersehen werden, stellen Sie sicher, dass nachfolgende Aufrufe für einen bereits angemeldeten Benutzer dem Endpunkt des Mandanten gelten.