SAML-Token und SAML-AnsprücheSAML Tokens and Claims

Security Assertions Markup Language (SAML) Token sind XML-Darstellungen von Ansprüchen.Security Assertions Markup Language (SAML) tokens are XML representations of claims. Standardmäßig werden von SAML-Token Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) verwendet in verbundsicherheitsszenarien werden ausgestellte Token.By default, SAML tokens Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) uses in federated security scenarios are issued tokens.

SAML-Token enthalten Anweisungen, die Sets mit Ansprüchen sind, die von einer Entität über eine andere Entität gemacht wurden.SAML tokens carry statements that are sets of claims made by one entity about another entity. In Verbundsicherheitsszenarien werden Anweisungen beispielsweise von einem Sicherheitstokendienst über einen Benutzer im System getroffen.For example, in federated security scenarios, the statements are made by a security token service about a user in the system. Der Sicherheitstokendienst signiert das SAML-Token, um die Richtigkeit der Anweisungen im Token zu bestätigen.The security token service signs the SAML token to indicate the veracity of the statements contained in the token. Darüber hinaus ist das SAML-Token kryptografischen Schlüsselmaterialien zugewiesen, wobei der Benutzer des SAML-Tokens beweisen muss, dass er um diese Materialien weiß.In addition, the SAML token is associated with cryptographic key material that the user of the SAML token proves knowledge of. Dieser Beleg reicht aus, um die vertrauende Seite zu überzeugen, dass das SAML-Token tatsächlich für diesen Benutzer ausgestellt wurde.This proof satisfies the relying party that the SAML token was, in fact, issued to that user. Ein typisches Szenario sieht folgendermaßen aus:For example, in a typical scenario:

  1. Ein Client fordert einen SAML-Token von einem Sicherheitstokendienst an, wobei er sich bei diesem Dienst mit den Windows-Anmeldeinformationen authentifiziert.A client requests a SAML token from a security token service, authenticating to that security token service by using Windows credentials.

  2. Der Sicherheitstokendienst stellt dem Client einen SAML-Token aus.The security token service issues a SAML token to the client. Das SAML-Token wird mit einem dem Sicherheitstokendienst zugewiesenen Zertifikat signiert und enthält einen Prüfschlüssel, der für den Zieldienst verschlüsselt wurde.The SAML token is signed with a certificate associated with the security token service and contains a proof key encrypted for the target service.

  3. Der Client empfängt auch eine Kopie der Prüfschlüssel.The client also receives a copy of the proof key. Der Client stellt dann das SAML-Token an den Anwendungsdienst (der vertrauende) und signiert die Nachricht mit diesem Prüfschlüssel.The client then presents the SAML token to the application service (the relying party) and signs the message with that proof key.

  4. Die Signatur über dem SAML-Token zeigt der vertrauenden Seite, dass der Sicherheitstokendienst das Token ausgestellt hat.The signature over the SAML token tells the relying party that the security token service issued the token. Die mit dem Prüfschlüssel erstellte Nachrichtensignatur zeigt der vertrauenden Seite, dass das Token für den Client ausgestellt wurde.The message signature created with the proof key tells the relying party that the token was issued to the client.

Von Ansprüchen zu SamlAttributesFrom Claims to SamlAttributes

In WCFWCF werden Anweisungen in SAML-Token als SamlAttribute-Objekte modelliert, die direkt aus Claim-Objekten gefüllt werden können, vorausgesetzt das Claim-Objekt hat dieRight-Eigenschaft des Typs PossessProperty und die Resource-Eigenschaft des Typs String.In WCFWCF, statements in SAML tokens are modeled as SamlAttribute objects, which can be populated directly from Claim objects, provided the Claim object has a Right property of PossessProperty and the Resource property is of type String. Zum Beispiel:For example:

Claim myClaim = new Claim(
    ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)

Hinweis

Wenn SAML-Token in Nachrichten serialisiert werden, z. B. wenn sie von einem Sicherheitstokendienst ausgestellt werden oder von Clients im Rahmen der Authentifizierung an Dienste gegeben werden, muss das Kontingent für die maximale Nachrichtengröße groß genug sein, um das SAML-Token und die anderen Teile der Nachricht aufnehmen zu können.When SAML tokens are serialized in messages, either when they are issued by a security token service or when they are presented by clients to services as part of authentication, the maximum message size quota must be sufficiently large to accommodate the SAML token and the other message parts. Normalerweise ist das Kontingent für Nachrichten in Standardgröße ausreichend.In normal cases, the default message size quotas are sufficient. Wenn jedoch ein SAML-Token sehr groß ist, da es mehrere Hundert Ansprüche enthält, müssen Sie u. U. das Kontingent vergrößern, um das serialisierte Token aufnehmen zu können.However, in cases where a SAML token is large because it contains hundreds of claims, you may need to increase the quotas to accommodate the serialized token. Weitere Informationen finden Sie unterFor more information, seeSicherheitsüberlegungen zu Daten. Security Considerations for Data.

Von SamlAttributes zu AnsprüchenFrom SamlAttributes to Claims

Wenn SAML-Token in Nachrichten empfangen werden, werden die unterschiedlichen Anweisungen im SAML-Token in IAuthorizationPolicy-Objekte umgewandelt, die in den AuthorizationContext gesetzt werden.When SAML tokens are received in messages, the various statements in the SAML token are turned into IAuthorizationPolicy objects that are placed into the AuthorizationContext. Die Ansprüche aus jeder SAML-Anweisung werden von der ClaimSets-Eigenschaft des AuthorizationContext zurückgegeben und können überprüft werden, um zu bestimmen, ob der Benutzer authentifiziert und autorisiert werden sollThe claims from each SAML statement are returned by the ClaimSets property of the AuthorizationContext and can be examined to determine whether to authenticate and authorize the user.

Siehe auchSee Also

AuthorizationContext
IAuthorizationPolicy
ClaimSet
VerbundFederation
Vorgehensweise: Erstellen eines VerbundclientsHow to: Create a Federated Client
Vorgehensweise: Konfigurieren von Anmeldeinformationen für einen VerbunddienstHow to: Configure Credentials on a Federation Service
Verwalten von Ansprüchen und Autorisierung mit dem IdentitätsmodellManaging Claims and Authorization with the Identity Model
Ansprüche und TokenClaims and Tokens
Erstellen von Ansprüchen und RessourcenwerteClaim Creation and Resource Values
Vorgehensweise: Erstellen eines benutzerdefinierten AnspruchsHow to: Create a Custom Claim