Auswählen einer Identitätsverwaltungslösung
Die meisten Web-Apps unterstützen eine Authentifizierung, um sicherzustellen, dass Benutzer*innen die behauptete Identität aufweisen. Ein/e Benutzer*in kann eine Person oder eine andere App sein. Durch die Verwaltung des Zugriffs wird sichergestellt, dass Benutzer*innen nur die Informationen anzeigen und ändern können, für deren Anzeige bzw. Änderung sie autorisiert sind. Endbenutzer*innen sollten z. B. keinen Zugriff auf den administrativen Bereich einer Website haben. Identity-Verwaltungslösungen sind darauf ausgelegt, die Anforderungen von Authentifizierungs- und Autorisierungsaufgaben zu erfüllen. Weitere Informationen zur Identitätsverwaltung finden Sie unter Was ist Identitäts- und Zugriffsverwaltung?. Es sind viele Identitätsverwaltungslösungen für .NET-Web-Apps verfügbar, jeweils mit unterschiedlichen Funktionen und Anforderungen für die Verwendung oder Installation. Dieser Artikel enthält einen Leitfaden zum Auswählen der richtigen Lösung.
Grundlegende Identitätsverwaltung mit ASP.NET Core Identity
ASP.NET Core wird mit einem integrierten Authentifizierungsanbieter ausgeliefert: ASP.NET Core Identity. Der Anbieter umfasst die APIs, die Benutzeroberfläche und die Back-End-Datenbankkonfiguration zur Unterstützung der Verwaltung von Benutzeridentitäten, der Speicherung von Benutzeranmeldeinformationen und der Erteilung oder des Widerrufs von Berechtigungen. Weitere unterstützte Features umfassen:
- Externe Anmeldungen
- Zwei-Faktor-Authentifizierung
- Kennwortverwaltung
- Kontosperrung und -reaktivierung
- Authentifikator-Apps
In den meisten Szenarien kann dies der einzige benötigte Anbieter sein.
Weitere Informationen:
- Lesen Sie die Einführung in Identity in ASP.NET Core.
- Befolgen Sie ein Tutorial zum Erstellen Ihrer eigenen sicheren .NET-Web-App: Sichern einer .NET-Web-App mit dem ASP.NET Core Identity Framework.
In anderen Szenarien kann ein Server oder Dienst zur Verwaltung der Authentifizierung und Identität von Vorteil sein.
Ermitteln, ob ein OIDC-Server erforderlich ist
Web-Apps erfordern eine Möglichkeit, sich vergangene Aktionen merken zu können, da das Web standardmäßig zustandslos ist. Andernfalls wären Benutzer*innen bei jedem Navigieren zu einer neuen Seite gezwungen, ihre Anmeldeinformationen einzugeben. Die gängige Lösung zum Speichern des Zustands sind Cookies, ein browserbasierter Mechanismus zum Speichern von Daten. Der Webserver sendet den anfänglichen cookie, der dann im Browser gespeichert und mit jeder Anforderung zurückgesendet wird. Dies geschieht automatisch, ohne dass Entwickelnde Code schreiben müssen. Cookies sind einfach zu verwenden und in den Browser integriert. Sie sind jedoch für die Verwendung in einer einzigen Website oder Webdomäne konzipiert. Die Standardlösung, die in ASP.NET Core integriert ist, verwendet cookie-basierte Authentifizierung.
Token sind Container mit Metadaten, die explizit über die Header oder den Hauptteil von HTTP-Anforderungen übergeben werden. Der Hauptvorteil von Token gegenüber Cookies besteht darin, dass sie nicht an eine bestimmte App oder Domäne gebunden sind. Stattdessen werden Token in der Regel mit asymmetrischer Kryptografie signiert. Beispielsweise geben OIDC-Server Token mit Informationen zur Identität mithilfe des Formats JSON Web Token (JWT) aus, das Signieren einschließt. Bei der asymmetrischen Kryptografie wird eine Kombination aus einem privaten Schlüssel, der nur der signierenden Seite bekannt ist, und einem öffentlichen, allgemein bekannten Schlüssel verwendet. Token können auch verschlüsselt werden.
Das signierte Token kann aufgrund des privaten Schlüssels nicht manipuliert werden. Durch den öffentlichen Schlüssel wird Folgendes erreicht:
- Er ermöglicht es, das Token zu überprüfen, um sicherzustellen, dass es nicht geändert wurde.
- Er wurde garantiert von der Entität generiert, die den privaten Schlüssel besitzt.
Der Hauptnachteil bei der Verwendung von Token besteht darin, dass sie einen Dienst (in der Regel einen OIDC-Server) erfordern, der Token ausstellen und überprüfen kann. Der Dienst muss installiert, konfiguriert und verwaltet werden.
Häufig ist ein OIDC-Server für Anwendungen erforderlich, die webbasierte APIs verfügbar machen, die von anderen Apps genutzt werden. Für verfügbar gemachte webbasierte APIs gelten Clientbenutzeroberflächen wie Single Page-Webanwendungen (SPA), mobile Clients und Desktopclients als Teil derselben App. Beispiele für SPA umfassen Angular, React und Blazor WebAssembly. Wenn andere Apps als Ihre Web-App oder Clientbenutzeroberflächen einen sicheren API-Aufruf an Ihre App vornehmen müssen, sollten Sie wahrscheinlich Token verwenden. Wenn Sie nur über Clientbenutzeroberflächen verfügen, bietet ASP.NET Core Identity die Möglichkeit, bei der Authentifizierung ein Token abzurufen. Für von ASP.NET Core Identity ausgestellte Authentifizierungstoken gilt:
- Sie können von mobilen und Desktopclients verwendet werden. Cookies werden gegenüber Token sowohl aus Sicherheitsgründen als auch wegen der Einfachheit bevorzugt.
- Sie eignen sich nicht für die Verwaltung des Zugriffs von Apps von Drittanbietern.
Ein weiterer Grund für die Notwendigkeit eines OIDC-Servers ist die gemeinsame Anmeldung mit anderen Apps. Dieses häufig als einmaliges Anmeldenbezeichnete Feature ermöglicht Benutzer*innen Folgendes:
- Einmaliges Anmelden mit dem Formular einer Web-App.
- Verwenden der resultierenden Anmeldeinformationen, um sich bei anderen Apps zu authentifizieren, ohne sich erneut anzumelden oder ein anderes Kennwort auszuwählen.
Ein OIDC-Server wird in der Regel bevorzugt, da er eine sichere und skalierbare Lösung für einmaliges Anmelden bereitstellt.
Bei Apps, die keine Anmeldungen mit anderen Apps gemeinsam haben, besteht die einfachste Möglichkeit zum schnellen Sichern einer App darin, den integrierten ASP.NET Core Identity-Anbieter zu verwenden. Andernfalls ist ein OIDC-Server erforderlich, der von einer Identitätsverwaltungslösung eines Drittanbieters bereitgestellt wird. OIDC-Server sind in folgenden Varianten verfügbar:
- Produkte, die Sie auf Ihrem Server installieren, oft als selbstgehostet bezeichnet.
- Container, die auf einem Host wie Docker ausgeführt werden.
- Webbasierte Dienste, mit denen Sie eine Integration zur Verwaltung der Identität ausführen können.
Einige Lösungen sind kostenlos und Open Source, während andere kommerziell lizenziert sind. Eine Liste der verfügbaren Optionen finden Sie unter Identitätsverwaltungslösungen. Möglicherweise verwendet Ihre Organisation bereits einen Identitätsanbieter. In diesem Fall kann es sinnvoll sein, den vorhandenen Anbieter zu verwenden, anstatt mit einer anderen Lösung zu arbeiten. Alle wichtigen Lösungen bieten eine Dokumentation zum Konfigurieren von ASP.NET Core für die Verwendung des Produkts oder Diensts.
Szenario für Verbindung getrennt
Viele Lösungen wie Microsoft Entra ID sind cloudbasiert und erfordern eine Internetverbindung. Wenn Ihre Umgebung keine Internetverbindung zulässt, können Sie den Dienst nicht verwenden.
ASP.NET Core Identity funktioniert in getrennten Szenarien wie z. B.:
- Die App kann nicht auf das Internet zugreifen.
- Die App muss weiterhin im lokalen Netzwerk funktionieren, auch wenn die Verbindung mit dem Internet getrennt ist.
Wenn Sie einen vollständigen OIDC-Server für ein getrenntes Szenario benötigen, wählen Sie eine der folgenden Optionen aus:
- Eine Lösung, bei der Sie den Dienst auf eigenen Computern installieren und ausführen können.
- Lokales Ausführen des Authentifizierungsdienst als Container.
Entscheiden, wo Benutzerdaten wie Anmeldungen gespeichert werden
Ein weiterer wichtiger Faktor, den Sie berücksichtigen sollten, ist die Frage, wo die Benutzeranmeldungsdaten gespeichert werden. Viele Entwickelnde wählen externe, cloudbasierte Dienste wie Microsoft Entra ID zum Verwalten der identity aus. Ein cloudbasierter Dienstanbieter hat folgende Vorteile:
- Er übernimmt die Verantwortung für die sichere Speicherung von Daten.
- Er hält die Software mit den aktuellsten Sicherheitspatches und Releases auf dem neuesten Stand.
- Einhaltung der privacy-Vorschriften
Andere bevorzugen es aufgrund von Vorschriften, Compliance, Richtlinien oder aus anderen Gründen, Daten auf ihren eigenen Servern zu speichern.
Wenn die Daten auf Ihren Servern gespeichert werden, müssen Sie wahrscheinlich eine installierbare oder containerbasierte Lösung auswählen.
Identity im Vergleich mit OIDC-Server
Entscheiden Sie anhand des folgenden Diagramms, ob Sie das ASP.NET Core Identity-System oder einen OIDC-Server für die Authentifizierung und Autorisierung verwenden möchten:
In der folgenden Tabelle sind einige der Punkte aufgeführt, die Sie bei der Auswahl Ihrer Identitätsverwaltungslösung berücksichtigen sollten.
Feature | Selbstgehostet (Infrastruktur oder Container) | Cloud |
---|---|---|
App-Integration | Lokale Lösungen, die als Bibliotheken oder Frameworks implementiert sind, können häufig direkt in Ihre eigene App integriert werden. Containerbasierte Lösungen erfordern eine Übergabe zwischen der Web-App und dem containerbasierten Dienst. | Cloudbasierte Lösungen werden in der Regel an bestimmten Punkten in Ihrem Anmeldeflow integriert und stellen eine Konfiguration bereit, um die Benutzeroberfläche entsprechend Ihrem Design zu aktualisieren, aber der verfügbare Anpassungsumfang ist begrenzt. |
Konfiguration | Selbstgehostete Lösungen erfordern das Konfigurieren der Software für die Umgebung sowie das Einrichten der Identitätsverwaltung. Containerbasierte Lösungen bieten in der Regel eine webbasierte Benutzeroberfläche für die Konfiguration. | Cloudbasierte Lösungen bieten in der Regel eine webbasierte Benutzeroberfläche für die Konfiguration. |
Anpassung | Selbstgehostete Lösungen sind meist hochgradig anpassbar, einschließlich codebasierter Änderungen. Containerisierte Lösungen bieten zwar Erweiterungsoptionen, sind jedoch häufig stärker eingeschränkt. | Cloudbasierte Dienste ermöglichen Anpassungen, sind oft auf konfigurationsbasierte Änderungen beschränkt. |
Wartung | Installierte Produkte erfordern eine dedizierte Ressource, um sicherzustellen, dass alle Sicherheitspatches zeitnah angewandt und Upgrades verwaltet werden. Der Upgrade- und Patchprozess für Container ist in der Regel mit weniger Aufwand verbunden und umfasst lediglich die Installation des bereitgestellten Containerimages. | Der Dienstanbieter verwaltet seine cloudbasierte Lösung, einschließlich der Anwendung erforderlicher Patches und der Behandlung von Upgrades. |
Speicherung von Benutzeranmeldeinformationen | Sie sind für die Datengovernance und die Behandlung von Verstößen verantwortlich. | Die Verwaltung der Risiken im Zusammenhang mit der Behandlung von Benutzeranmeldeinformationen und die Einhaltung von Vorschriften werden an den Dienstanbieter delegiert. |
Weitere Informationen zu verfügbaren Optionen finden Sie unter Identity-Verwaltungslösungen für ASP.NET Core.
Nächste Schritte
- Erfahren Sie mehr über JSON Web Tokens.
- Durchsuchen Sie Beispiel-Apps mit Authentifizierung/Autorisierung und Identität für ASP.NET Core.
- Befolgen Sie ein Tutorial zum Sichern einer .NET-Web-App mithilfe der integrierten ASP.NET Core Identity.
- Erfahren Sie mehr über den Schutz von Web-APIs.
ASP.NET Core