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
The user presents the credentials to the issuing authority that the RP application trusts.
Was können Sie als Autorität / Emittent verwenden? Einige Beispiele wären schön. Ich habe den Artikel auf der msdn-Site (den von Ihnen angegebenen Link) rot angezeigt, aber es wird nur ein Beispiel aufgeführt: ADFS, gibt es noch andere Optionen? Ich kann diese Informationen nirgendwo finden. :(Nur um mehr zu dem hinzuzufügen, was @Lin oben gesagt hat. Ich beziehe mich speziell auf die Frage:
Stellen Sie sich einen Fall vor, in dem Sie ein Taktsystem haben, in dem Sie einen Techniker und einen Manager haben. Am Ende jeder Woche muss der Techniker Berichte mit Taktinformationen erstellen, aus denen hervorgeht, wie viele Handwerker in dieser Woche gearbeitet haben. Diese Informationen werden konsolidiert und von der Personalabrechnung verwendet. Solche Systeme müssen häufig geändert oder korrigiert werden, bevor Abschlussberichte eingereicht werden, da Sie Ihre Mitarbeiter nicht über- oder unterbezahlen möchten. Sie können einen
Role-Based
Ansatz für den Manager und den Techniker verwenden, indem Sie einManager Role
und erstellenTechnician Role
. Aber derManager Role
ist derjenige mit der Fähigkeit, auf die Taktinformationen der Handwerker zuzugreifen und diese zu bearbeiten. Auf der anderen Seite können Sie die habenTechnician Role
ohne diese Fähigkeit, auf diese Informationen zuzugreifen. Aber hier ist der interessante Teil; Ein Manager kann einen Anspruch geltend machen und einem Techniker den Zugriff auf die Uhrensysteme und die Erstellung von Berichten ermöglichen. Ein Anspruch kann also nur für den Zugriff ohne Bearbeitung oder mit Zugriffs- und Bearbeitungsfunktionen geltend gemacht werden.Es ist eher so, als würde man sagen: Standardmäßig kann ich als Manager auf einige Informationen zugreifen, auf die mein Techniker nicht zugreifen kann. Aber ich bin nicht immer im Büro? Was kann ich tun, damit er die Arbeit auch dann noch erledigen kann, wenn ich nicht in der Nähe bin? Um dies zu lösen, kann das System den Managern die Möglichkeit geben, Ansprüche für Personen ohne Zugriff auf bestimmte Informationen zu erstellen. Wir sehen diese oft überall in unseren ERP-Systemen. Ein Benutzer ohne Zugriff auf einige Module und wenn er befördert wird, erteilt er mehr Modulen des ERP-Systems die Berechtigung, wobei manchmal dieselbe Benutzerrolle beibehalten wird.
Dies ist ein Beispiel, das Sie in Betracht ziehen können, um Ansprüche und Rollen besser zu verstehen.
quelle
Es gibt zwei Arten der Authentifizierung in der ASP.Net-Identität.
Sie können entweder einen von ihnen oder beide gleichzeitig verwenden. Verwenden Sie rollenbasiert, wenn Sie sehr definierte Dinge haben. Zum Beispiel erstellen Sie zwei Rollenlehrer und -schüler. Nur der Lehrer kann Fächer hinzufügen. Sie haben also den Benutzern die Lehrerrolle zugewiesen, auf die Sie Zugriff haben möchten, um Fächer hinzuzufügen.
Anspruchsbasiert ist flexibler. Angenommen, Sie haben eine Anforderung, dass einige Schüler auch Fächer hinzufügen können. In diesem Fall müssen Sie eine weitere Rolle erstellen, die Schüler sein und Zugriff auf das Hinzufügen eines Fachs haben kann. Aber wenn Sie Claim Based verwenden, wäre dies sehr einfach. Erstellen Sie einfach einen Anspruch wie addSubject und weisen Sie ihn jedem Benutzer zu, auf den Sie zugreifen möchten, um ein Objekt hinzuzufügen.
quelle