Was bedeutet der Anspruchsmechanismus im neuen ASP.NET Identity Core?
Es gibt zwei gängige Autorisierungsansätze, die auf Rolle und Anspruch basieren.
Rollenbasierte Sicherheit
Ein Benutzer wird einer oder mehreren Rollen zugewiesen, über die der Benutzer Zugriffsrechte erhält. Durch Zuweisen eines Benutzers zu einer Rolle erhält der Benutzer sofort alle für diese Rolle definierten Zugriffsrechte.
Anspruchsbasierte Sicherheit
Eine anspruchsbasierte Identität ist die Menge der Ansprüche. Ein Anspruch ist eine Aussage, die eine Entität (ein Benutzer oder eine andere Anwendung) über sich selbst macht. Es ist nur ein Anspruch. Beispielsweise kann eine Anspruchsliste den Namen des Benutzers, die E-Mail-Adresse des Benutzers, das Alter des Benutzers und die Berechtigung des Benutzers für eine Aktion enthalten. In der rollenbasierten Sicherheit präsentiert ein Benutzer die Anmeldeinformationen direkt der Anwendung. In einem anspruchsbasierten Modell präsentiert der Benutzer der Anwendung die Ansprüche und nicht die Anmeldeinformationen. Damit ein Anspruch einen praktischen Wert hat, muss er von einer Entität stammen, der die Anwendung vertraut.
Die folgenden Schritte veranschaulichen die Abfolge in einem anspruchsbasierten Sicherheitsmodell:
- Der Benutzer fordert eine Aktion an. Die Anwendung der vertrauenden Partei (RP) fordert ein Token an.
- Der Benutzer legt die Anmeldeinformationen der ausstellenden Behörde vor, der die RP-Anwendung vertraut.
- Die ausstellende Behörde stellt nach der Authentifizierung der Anmeldeinformationen des Benutzers ein signiertes Token mit Ansprüchen aus.
- Der Benutzer präsentiert das Token der RP-Anwendung. Die Anwendung validiert die Tokensignatur, extrahiert die Ansprüche und akzeptiert auf der Grundlage der Ansprüche die Anforderung entweder oder lehnt sie ab.
Aber ich kann immer noch keine Informationen verstehen und finden, wenn Daten zu AspNetUserClaims hinzugefügt werden und für welche Situationen diese Tabelle verwendet wird.
Wenn Sie sich in einer Situation befinden, in der keine rollenbasierte Sicherheit verwendet wird und Sie sich für die Verwendung der anspruchsbasierten Sicherheit entschieden haben, müssen Sie die AspNetUserClaims-Tabelle verwenden. Weitere Informationen zur Verwendung von Ansprüchen in ASP.NET Identity finden Sie unter dem folgenden Link.
http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html
Aktualisieren
Wann muss ich rollenbasierte Sicherheit verwenden und wann beanspruchbasiert? Könnten Sie bitte ein paar Beispiele schreiben?
Es gibt keine sehr klare Situation, in der Sie rollenbasierte oder anspruchsbasierte Sicherheit verwenden würden oder nicht. Nicht wie in einem Fall, in dem Sie A anstelle von B verwenden würden.
Die anspruchsbasierte Zugriffskontrolle ermöglicht jedoch eine bessere Trennung der Autorisierungsregeln von der Kerngeschäftslogik. Wenn sich Autorisierungsregeln ändern, bleibt die Kerngeschäftslogik unberührt. Es wird Situationen geben, in denen Sie möglicherweise den anspruchsbasierten Ansatz bevorzugen.
Manchmal werden Ansprüche nicht benötigt. Dies ist ein wichtiger Haftungsausschluss. Unternehmen mit einer Vielzahl interner Anwendungen können die integrierte Windows-Authentifizierung verwenden, um viele der Vorteile von Ansprüchen zu erzielen. Active Directory leistet hervorragende Arbeit beim Speichern von Benutzeridentitäten. Da Kerberos Teil von Windows ist, müssen Ihre Anwendungen nicht viel Authentifizierungslogik enthalten. Solange jede von Ihnen erstellte Anwendung die integrierte Windows-Authentifizierung verwenden kann, haben Sie möglicherweise bereits Ihre Identitätsutopie erreicht. Es gibt jedoch viele Gründe, warum Sie möglicherweise etwas anderes als die Windows-Authentifizierung benötigen. Möglicherweise verfügen Sie über webbasierte Anwendungen, die von Personen verwendet werden, die keine Konten in Ihrer Windows-Domäne haben. Ein weiterer Grund könnte sein, dass Ihr Unternehmen mit einem anderen Unternehmen fusioniert ist und Sie ' Sie haben Probleme bei der Authentifizierung in zwei Windows-Gesamtstrukturen, die keine Vertrauensbeziehung haben (und möglicherweise nie haben). Möglicherweise möchten Sie Identitäten mit einem anderen Unternehmen teilen, das nicht über .NET Framework-Anwendungen verfügt, oder Sie müssen Identitäten zwischen Anwendungen teilen, die auf verschiedenen Plattformen (z. B. dem Macintosh) ausgeführt werden. Dies sind nur einige Situationen, in denen eine auf Ansprüchen basierende Identität die richtige Wahl für Sie sein kann.
Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/ff359101.aspx