Verwalten der Identität in mehrinstanzenfähigen AnwendungenManage identity in multitenant applications

In dieser Artikelreihe werden bewährte Methoden für Mehrmandantenfähigkeit bei Verwendung von Azure AD für die Authentifizierung und Identitätsverwaltung beschrieben.This series of articles describes best practices for multitenancy, when using Azure AD for authentication and identity management.

GitHub-BeispielcodeGitHub Sample code

Beim Erstellen einer mehrmandantenfähigen Anwendung besteht eine der ersten Herausforderungen in der Verwaltung der Benutzeridentitäten, da jeder Benutzer nun zu einem Mandanten gehört.When you're building a multitenant application, one of the first challenges is managing user identities, because now every user belongs to a tenant. Beispiel:For example:

  • Benutzer melden sich bei der App mit den Anmeldeinformationen ihrer Organisation an.Users sign in with their organizational credentials.
  • Benutzer sollten Zugriff auf Daten der eigenen Organisation haben, dürfen jedoch nicht auf Daten anderer Mandanten zugreifen.Users should have access to their organization's data, but not data that belongs to other tenants.
  • Eine Organisation kann sich für eine Anwendung anmelden und Organisationsmitgliedern dann Anwendungsrollen zuweisen.An organization can sign up for the application, and then assign application roles to its members.

Azure Active Directory (Azure AD) verfügt über einige hervorragende Funktionen, die alle diese Szenarios unterstützen.Azure Active Directory (Azure AD) has some great features that support all of these scenarios.

Wir haben begleitend für diese Artikelreihe eine vollständige End-to-End-Implementierung einer mehrinstanzenfähigen Anwendung erstellt.To accompany this series of articles, we created a complete end-to-end implementation of a multitenant application. Die Artikel fassen zusammen, was wir im Verlauf der Erstellung dieser Anwendung gelernt haben.The articles reflect what we learned in the process of building the application. Informationen zu den ersten Schritten mit der Anwendung finden Sie in der GitHub-Infodatei.To get started with the application, see the GitHub readme.

EinführungIntroduction

Angenommen, Sie schreiben eine SaaS-Unternehmensanwendung, die in der Cloud gehostet werden soll.Let's say you're writing an enterprise SaaS application to be hosted in the cloud. Selbstredend hat die Anwendung Benutzer:Of course, the application will have users:

Benutzer

Doch diese Benutzer gehören zu Organisationen:But those users belong to organizations:

Organisationsbenutzer

Beispiel: Tailspin verkauft Abonnements für seine SaaS-Anwendung.Example: Tailspin sells subscriptions to its SaaS application. Contoso und Fabrikam registrieren Sie sich für die App.Contoso and Fabrikam sign up for the app. Wenn Alice (alice@contoso) sich anmeldet, sollte die Anwendung wissen, dass Alice zu Contoso gehört.When Alice (alice@contoso) signs in, the application should know that Alice is part of Contoso.

  • Alice muss Zugriff auf Contoso-Daten haben.Alice should have access to Contoso data.
  • Alice darf keinen Zugriff auf Fabrikam-Daten haben.Alice should not have access to Fabrikam data.

In dieser Anleitung wird gezeigt, wie Sie Benutzeridentitäten in einer mehrmandantenfähigen Anwendung verwalten und dabei Azure Active Directory (Azure AD) für die Anmeldung und Authentifizierung verwenden.This guidance will show you how to manage user identities in a multitenant application, using Azure Active Directory (Azure AD) to handle sign-in and authentication.

Was bedeutet Mehrmandantenfähigkeit?What is multitenancy?

Ein Mandant ist eine Gruppe von Benutzern.A tenant is a group of users. Bei einer SaaS-Anwendung ist der Mandant ein Abonnent oder Kunde der Anwendung.In a SaaS application, the tenant is a subscriber or customer of the application. Mehrmandantenfähigkeit ist eine Architektur, in der mehrere Mandanten gemeinsam die gleiche physische Instanz der App nutzen.Multitenancy is an architecture where multiple tenants share the same physical instance of the app. Obwohl Mandanten physische Ressourcen (z. B. VMs oder Speicher) gemeinsam nutzen, erhält jeder Mandant eine eigene logische Instanz der App.Although tenants share physical resources (such as VMs or storage), each tenant gets its own logical instance of the app.

In der Regel werde Anwendungsdaten von den Benutzern innerhalb eines Mandanten, jedoch nicht mit anderen Mandanten gemeinsam genutzt.Typically, application data is shared among the users within a tenant, but not with other tenants.

Mehrere Mandanten

Vergleichen Sie diese Architektur mit einer Architektur mit nur einem Mandanten, bei der jeder Mandant über eine dedizierte physische Instanz verfügt.Compare this architecture with a single-tenant architecture, where each tenant has a dedicated physical instance. Bei einer Architektur mit nur einem Mandanten fügen Sie Mandanten hinzu, indem Sie neue Instanzen der App in Betrieb nehmen.In a single-tenant architecture, you add tenants by spinning up new instances of the app.

Einzelner Mandant

Mehrmandantenfähigkeit und horizontale SkalierungMultitenancy and horizontal scaling

Zur Skalierung in der Cloud werden im Allgemeinen mehrere physische Instanzen hinzugefügt.To achieve scale in the cloud, it's common to add more physical instances. Dies wird als horizontale Skalierung oder horizontales Hochskalieren bezeichnet. Nehmen Sie als Beispiel eine Web-App.This is known as horizontal scaling or scaling out. Consider a web app. Um mehr Datenverkehr zu bewältigen, können Sie weitere Server-VMs hinzufügen und für diese einen Lastenausgleich vornehmen.To handle more traffic, you can add more server VMs and put them behind a load balancer. Jede VM führt eine separate physische Instanz der Web-App aus.Each VM runs a separate physical instance of the web app.

Lastenausgleich für eine Website

Jede Anforderung kann an eine beliebige Instanz weitergeleitet werden.Any request can be routed to any instance. Zusammen arbeitet das System als eine einzelne logische Instanz.Together, the system functions as a single logical instance. Sie können eine VM entfernen oder eine neue VM hinzufügen, ohne dass sich dies auf Benutzer auswirkt.You can tear down a VM or spin up a new VM, without affecting users. In dieser Architektur ist jede physische Instanz mehrinstanzenfähig, und zum Skalieren fügen Sie weitere Instanzen hinzu.In this architecture, each physical instance is multitenant, and you scale by adding more instances. Falls eine Instanz ausfällt, sollte dies keine Auswirkungen auf irgendeinen Mandanten haben.If one instance goes down, it should not affect any tenant.

Identität in einer mehrmandantenfähigen AppIdentity in a multitenant app

In einer mehrmandantenfähigen App müssen Sie Benutzer im Kontext von Mandanten berücksichtigen.In a multitenant app, you must consider users in the context of tenants.

AuthentifizierungAuthentication

  • Benutzer melden Sie sich bei der App mit den Anmeldeinformationen für Ihre Organisation an.Users sign into the app with their organization credentials. Sie müssen keine neuen Benutzerprofile für die App erstellen.They don't have to create new user profiles for the app.
  • Benutzer innerhalb derselben Organisation gehören zum selben Mandanten.Users within the same organization are part of the same tenant.
  • Wenn sich ein Benutzer anmeldet, weiß die Anwendung, zu welchem Mandanten der Benutzer gehört.When a user signs in, the application knows which tenant the user belongs to.

AuthorizationAuthorization

  • Bei der Autorisierung der Aktionen eines Benutzers (z. B. Anzeigen einer Ressource) muss die App den Mandanten des Benutzers berücksichtigen.When authorizing a user's actions (say, viewing a resource), the app must take into account the user's tenant.
  • Benutzer können innerhalb der Anwendung Rollen wie „Admin“ oder „Standardbenutzer“ zugewiesen werden.Users might be assigned roles within the application, such as "Admin" or "Standard User". Rollenzuweisungen müssen vom Kunden und nicht vom SaaS-Anbieter verwaltet werden.Role assignments should be managed by the customer, not by the SaaS provider.

Beispiel:Example. Alice, eine Mitarbeiterin von Contoso, navigiert in ihrem Browser zur Anwendung und klickt auf die Schaltfläche „Anmelden“.Alice, an employee at Contoso, navigates to the application in her browser and clicks the "Log in" button. Sie wird zu einer Anmeldeseite umgeleitet, auf der sie ihre Unternehmensanmeldeinformationen (Benutzername und Kennwort) eingibt.She is redirected to a sign-in screen where she enters her corporate credentials (username and password). An dieser Stelle wird sie in der Anwendung als alice@contoso.comangemeldet.At this point, she is logged into the app as alice@contoso.com. Die Anwendung erkennt auch, dass Alice eine Administratorbenutzerin dieser Anwendung ist.The application also knows that Alice is an admin user for this application. Da sie eine Administratorin ist, wird ihr eine Liste aller Ressourcen gezeigt, die zu Contoso gehören.Because she is an admin, she can see a list of all the resources that belong to Contoso. Sie kann jedoch nicht Ressourcen von Fabrikam anzeigen, da sie nur in ihrem Mandanten Administratorin ist.However, she cannot view Fabrikam's resources, because she is an admin only within her tenant.

In dieser Anleitung untersuchen wir insbesondere den Einsatz von Azure AD für die Identitätsverwaltung.In this guidance, we'll look specifically at using Azure AD for identity management.

  • Wir setzen voraus, dass der Kunde Benutzerprofile (einschließlich Office 365- und Dynamics CRM-Mandanten) in Azure AD speichert.We assume the customer stores their user profiles in Azure AD (including Office365 and Dynamics CRM tenants)
  • Kunden mit einer lokalen Active Directory-Instanz können Azure AD Connect verwenden, um ihre lokale Active Directory-Instanz mit Azure AD zu synchronisieren.Customers with on-premises Active Directory can use Azure AD Connect to sync their on-premises Active Directory with Azure AD. Falls ein Kunde mit lokaler Active Directory-Instanz Azure AD Connect aufgrund von IT-Unternehmensrichtlinien oder aus einem anderen Grund nicht verwenden kann, kann der SaaS-Anbieter über Active Directory-Verbunddienste (AD FS) einen Verbund mit dem Verzeichnis des Kunden einrichten.If a customer with on-premises Active Directory cannot use Azure AD Connect (due to corporate IT policy or other reasons), the SaaS provider can federate with the customer's directory through Active Directory Federation Services (AD FS). Diese Option wird unter Federating with a customer's AD FS(Herstellen eines Verbunds mit den AD FS eines Kunden) beschrieben.This option is described in Federating with a customer's AD FS.

Andere Aspekte der Mehrmandantenfähigkeit (z. B. Datenpartitionierung, Einzelmandantenkonfiguration usw.) werden in dieser Anleitung nicht behandelt.This guidance does not consider other aspects of multitenancy such as data partitioning, per-tenant configuration, and so forth.

WeiterNext