Implementieren der rollenbasierten Zugriffssteuerung
Die rollenbasierte Zugriffssteuerung (RBAC) ermöglicht es Benutzern oder Gruppen, bestimmte Berechtigungen für den Zugriff auf und die Verwaltung von Ressourcen zu erhalten. In der Regel umfasst die Implementierung von RBAC zum Schutz einer Ressource den Schutz einer Webanwendung, einer Single-Page-Webanwendung (SPA) oder einer API. Dieser Schutz kann für die gesamte Anwendung oder API, für bestimmte Bereiche und Features oder für API-Methoden gelten. Weitere Informationen zu den Grundlagen der Autorisierung finden Sie unter Autorisierungsgrundlagen.
Wie in Rollenbasierte Zugriffskontrolle für Anwendungsentwickler beschrieben, gibt es drei Möglichkeiten, RBAC mit der Microsoft Identitätsplattform zu implementieren:
- App-Rollen: Verwendung des Features App-Rollen in einer Anwendung mithilfe einer Logik innerhalb der Anwendung, um eingehende App-Rollenzuweisungen zu interpretieren.
- Gruppen: Verwendung von Gruppenzuweisungen einer eingehenden Identität mithilfe von Logik innerhalb der Anwendung, um die Gruppenzuweisungen zu interpretieren.
- Benutzerdefinierter Datenspeicher: Abrufen und Interpretieren von Rollenzuweisungen mithilfe von Logik innerhalb der Anwendung.
Der bevorzugte Ansatz ist die Verwendung von App-Rollen, da er am einfachsten zu implementieren ist. Dieser Ansatz wird direkt von den SDKs unterstützt, die bei der Erstellung von Anwendungen verwendet werden, die die Microsoft Identitätsplattform nutzen. Weitere Informationen über die Auswahl eines Ansatzes finden Sie unter Auswählen eines Ansatzes.
Definieren von App-Rollen
Der erste Schritt bei der Implementierung von RBAC für eine Anwendung besteht darin, die App-Rollen dafür zu definieren und ihnen Benutzer oder Gruppen zuzuweisen. Dieser Prozess wird in Hinzufügen von Anwendungsrollen zu Ihrer Anwendung und ihrer Annahme im Token. Nachdem Sie die App-Rollen definiert und ihnen Benutzer oder Gruppen zugewiesen haben, greifen Sie auf die Rollenzuweisungen in den Token zu, die in die Anwendung gelangen, und handeln entsprechend.
Implementieren von RBAC in ASP.NET Core
ASP.NET Core unterstützt das Hinzufügen von RBAC zu einer ASP.NET Core-Webanwendung oder Web-API. Das Hinzufügen von RBAC ermöglicht eine einfache Implementierung unter Verwendung von Rollenüberprüfungen mit dem ASP.NET Core-Attribut zum Autorisieren. Es ist auch möglich, die Unterstützung von ASP.NET Core für richtlinienbasierte Rollenprüfungen zu nutzen.
Erstellen einer ASP.NET Core-MVC-Webanwendung
Das Implementieren von RBAC in einer ASP.NET Core MVC Webanwendung ist unkompliziert. Es beinhaltet hauptsächlich die Verwendung des Attributs Erstellen, um anzugeben, welche Rollen auf bestimmte Controller oder Aktionen in den Controllern zugreifen dürfen. Folgen Sie diesen Schritten, um RBAC in eine ASP.NET Core MVC-Anwendung zu implementieren:
Erstellen Sie eine Anwendungsregistrierung mit App-Rollen und Zuweisungen, wie oben unter Definieren von Rollen für Ihre Anwendung beschrieben.
Führen Sie einen der folgenden Schritte aus:
Erstellen Sie ein neues ASP.NET Core MVC-Webanwendungsprojekt mit der dotnet CLI. Geben Sie das Flag
--auth
mitSingleOrg
für die Einzelmandantenauthentifizierung oder mitMultiOrg
für Mehrfachmandantenauthentifizierung an, das Flag--client-id
mit dem Client von der Anwendungsregistrierung und das Flag--tenant-id
mit dem Mandanten vom Microsoft Entra-Mandanten:dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>
Fügen Sie die Bibliotheken Microsoft.Identity.Web und Microsoft.Identity.Web.Benutzeroberfläche zu einem bestehenden ASP.NET Core MVC-Projekt hinzu:
dotnet add package Microsoft.Identity.Web dotnet add package Microsoft.Identity.Web.UI
Folgen Sie den Anweisungen in Schnellstart: Hinzufügen der Anmeldung mit Microsoft zu einer ASP.NET Core-Webanwendung, um die Authentifizierung zu der Anwendung hinzuzufügen.
Fügen Sie Rollenüberprüfungen zu den Controlleraktionen hinzu, wie es in Rollenüberprüfungen hinzufügen beschrieben ist.
Probieren Sie die Anwendung aus, indem Sie versuchen, auf eine der geschützten MVC-Routen zuzugreifen.
ASP.NET Core-Web-API
Die Implementierung von RBAC in einerASP.NET Core-Web-API beinhaltet hauptsächlich die Verwendung des Attributs Erstellen, um festzulegen, welche Rollen auf bestimmte Controller oder Aktionen in den Controllern zugreifen dürfen. Folgen Sie diesen Schritten, um RBAC in der ASP.NET Core-Web-API zu implementieren:
Erstellen Sie eine Anwendungsregistrierung mit App-Rollen und Zuweisungen, wie oben unter Definieren von Rollen für Ihre Anwendung beschrieben.
Führen Sie einen der folgenden Schritte aus:
Verwenden Sie dotnet cli, um ein neues ASP.NET Core MVC Web API-Projekt zu erstellen. Geben Sie das Flag
--auth
mitSingleOrg
für die Einzelmandantenauthentifizierung oder mitMultiOrg
für Mehrfachmandantenauthentifizierung an, das Flag--client-id
mit dem Client von der Anwendungsregistrierung und das Flag--tenant-id
mit dem Mandanten vom Microsoft Entra-Mandanten:dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>
Fügen Sie die Microsoft.Identity.Web und Swashbuckle.AspNetCore-Bibliotheken zu einem bestehenden ASP.NET Core Web API-Projekt hinzu:
dotnet add package Microsoft.Identity.Web dotnet add package Swashbuckle.AspNetCore
Folgen Sie den Anweisungen in Schnellstart: Hinzufügen der Anmeldung mit Microsoft zu einer ASP.NET Core-Webanwendung, um die Authentifizierung zu der Anwendung hinzuzufügen.
Fügen Sie Rollenüberprüfungen zu den Controlleraktionen hinzu, wie es in Rollenüberprüfungen hinzufügen beschrieben ist.
Aufrufen der API von einer Clientanwendung aus. Siehe Aufrufen der Angular Single-Page-Webanwendung mit ASP.NET Core Web-API und Implementieren der rollenbasierten Zugriffssteuerung mit Anwendungsrollen für ein End-to-End-Beispiel.
Implementieren von RBAC auf anderen Plattformen
Angular-SPA
Die Implementierung von RBAC in einer Angular-SPA beinhaltet die Verwendung der Microsoft Authentication Library for Angular zur Autorisierung des Zugriffs auf die in der Anwendung enthaltenen Angular-Routen. Ein Beispiel ist in der MSAL Angular v3 Samples dargestellt.
Hinweis
Client-seitige RBAC-Implementierungen sollten mit server-seitigem RBAC gepaart werden, um zu verhindern, dass nicht autorisierte Anwendungen auf sensible Ressourcen zugreifen.
Node.js mit Express-Anwendung
Die Implementierung von RBAC in einer Node.js mit Express-Anwendung umfasst die Verwendung von MSAL zur Autorisierung des Zugriffs auf die in der Anwendung enthaltenen Express-Routen. Dies wird im Beispiel Aktivieren Ihrer Node.js-Webanwendung, um Benutzer anzumelden, und Aufrufen von APIs mit dem Microsoft-Identitätsplattform veranschaulicht.
Nächste Schritte
- Lesen Sie mehr über Berechtigungen und Einwilligung in der Microsoft Identitätsplattform.
- Lesen Sie mehr über rollenbasierte Zugriffskontrolle für Anwendungsentwickler.