Was ist der Zweck des Namensidentifizierungsanspruchs?

74

Wofür http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifiersollte der Typanspruch verwendet werden?

Dies ist die Hauptfrage, und hier sind weitere.

Wie unterscheidet es sich von http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameAnspruch?

Ist es für einen bestimmten Benutzer dauerhaft und nicht für einen Namensanspruch?

Ist es global oder IdP?

Anthony Serdyukov
quelle
Hast du jemals eine Antwort darauf gefunden, Anton?
Tommy Jakobsen
Hallo, @TommyJakobsen. Unglücklicherweise nicht. Letztendlich haben wir diesen Anspruch in unserer Bewerbung nicht verwendet.
Anthony

Antworten:

48

Nameist nur das ein Name. Wenn wir über eine Person sprechen, denken Sie an "Eric". ein Server "file01".

A NameIdentifierist die ID für ein Objekt. Zurück zu unserem Personenobjekt: Erics Benutzer-ID befindet sich möglicherweise in Ihrer Datenbank. Für den Server kann der Bezeichner so etwas wie ein FQDN oder eine SID sein.

Laut diesem Beitrag war Name Identifier anscheinend eine SAML 1.1-Eigenschaft und wird NameIDin SAML 2.0 ersetzt.

Einzigartig oder nicht?

Ich wollte @ Jasons Kommentar und @ nzpcmads Beitrag ansprechen. Ich sehe Einzigartigkeit nicht als eindeutige Anforderung. Die Frage ist markiertDas Schema, auf das verwiesen wird, gehört jedoch OASIS. Das sind also die Interpretationen der beiden Parteien, die wir ausbalancieren müssen.

Die Haltung von Microsoft zu ADFS ist eindeutig, dass es eine einzigartige Anforderung gibt. Wir sehen das im Artikel " Die Rolle der Ansprüche ". Zweifellos wirft ADFS einen großen Schatten, aber dies scheint ein Implementierungsdetail zu sein.

Wenn ich mir die SAML 1.1-Spezifikation anschaue , sehe ich jedoch keine solche Behauptung. Das nächste, was wir in Abschnitt 2.4.2.2 der Spezifikation erhalten, ist:

Das Element gibt einen Betreff durch eine Kombination aus einem Namensqualifizierer, einem Namen und einem Format an. Das Element weist die folgenden Attribute auf:
...
NameQualifier [optional] Die Sicherheits- oder Verwaltungsdomäne, die den Namen des Betreffs qualifiziert. Dieses Attribut bietet die Möglichkeit, Namen aus unterschiedlichen Benutzerspeichern ohne Kollision zusammenzufassen.

Der Text der Spezifikation sagt mir, dass ich in der Lage sein muss, eine Person zu finden, die eine Kombination der drei Attribute verwendet, aber es gibt keine Aussage über die Einzigartigkeit. Könnte ich nicht zwei Einträge haben, die auf denselben Benutzer verweisen? Scheint so. Würde die Spezifikation nicht auch angeben, dass das NameQualifierAttribut in Fällen erforderlich war, in denen NameIdentifierdie eindeutige Identifizierung des Namens nicht ausreichte?

Wozu führt das alles?

  • Seien Sie vorsichtig, Unqiue ist wahrscheinlich sicherer.
  • Informieren Sie sich über die Haltung Ihres Anbieters zu diesem Thema.
EBarr
quelle
1
Ich denke, die Antwort von nzpcmad bringt hier mehr Klarheit. Ein Name ist nicht nur ein Name, wenn er eindeutig sein soll. Ich war verwirrt darüber, ob ich Name oder NameIdentifier zum Speichern von Benutzernamen verwenden sollte. Jetzt weiß ich.
Jason
11

Nach der Rolle der Ansprüche ,

Name Der eindeutige Name des Benutzers

Namenskennung Die SAML-Namenskennung des Benutzers

Diese beiden Ansprüche gehören zu der Gruppe von Ansprüchen, die AD FS 2.0 standardmäßig konfiguriert.

Dies bedeutet, dass sie einen IP-Gültigkeitsbereich haben.

Wenn Sie sich beispielsweise mit ACS bei Google anmelden, ist "nameidentifier" die eindeutige GUID, die Google Ihrem Konto zuordnet, während der Name Ihr Google-Login ist, z. B. "[email protected]".

rbrayb
quelle
2
Vielen Dank, @nzpcmad, für Ihre Aufmerksamkeit. Es ist mir jedoch immer noch unklar, was "Namenskennung" bedeutet. Es gibt keine Erklärung in der Phrase "Die SAML-Namenskennung des Benutzers".
Anthony Serdyukov
7

ClaimTypes.Nameist für den Benutzernamen und ClaimTypes.NameIdentifiergibt die Identität des Benutzers als Objektperspektive an. Wenn Sie sie in eine Art ClaimIdentityObjekt User.Identityeinfügen , mit dem Sie Methoden erreichen können (z. B. in der Dotnet-Welt), die GetUserName()und sind GetUserId().

tsubasaetkisi
quelle
-1

Der nameidentifierAnspruch sollte verwendet werden, um einen eindeutigen Benutzernamen zu erhalten.

Für die Windows-Authentifizierung:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier domain \ warlock

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 0 # .w | domain \ warlock

domain \ warlock ist ein Windows-Anmeldename

Für anspruchsbasierte Authentifizierung:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier [email protected]

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 05.t|myidentityprovider|[email protected]

E-Mail wurde als Identifier Claim angegeben

Wie Sie sehen können .../identity/claims/name, werden auch Name und Identität des Anbieters beschrieben.

Hexenmeister
quelle
5
Dieses Beispiel ist nicht sehr klar, widerspricht den beiden anderen Antworten und hat keine Belege. Akzeptierte Antworten besagen, dass die Namenskennung grundsätzlich eine eindeutige Ganzzahl oder GUID sein sollte und der Name der eindeutige Benutzername sein sollte.
Cchamberlain
Links sind gebrochen
Padhraic