Freigeben über


SAML-Token und Ansprüche

SAML-Token (Security Assertions Markup Language) sind XML-Darstellungen von Ansprüchen. Standardmäßig verwendet Windows Communication Foundation (WCF) in Verbundsicherheitsszenarien SAML-Token als bereitgestellte Token.

SAML-Token enthalten Aussagen, die aus Gruppen von Ansprüchen bestehen, die eine Entität über eine andere Entität macht. In Verbundsicherheitsszenarien werden die Aussagen beispielsweise von einem Sicherheitstoken-Dienst über einen Benutzer im System erstellt. Der Sicherheitstokendienst signiert das SAML-Token, um die Richtigkeit der im Token enthaltenen Aussagen zu bestätigen. Darüber hinaus ist das SAML-Token mit kryptografischen Schlüsselmaterial verknüpft, von dem der Benutzer des SAML-Tokens Kenntnis belegt. Dieser Nachweis erfüllt die vertrauende Seite, dass das SAML-Token tatsächlich an diesen Benutzer ausgestellt wurde. Beispiel: In einem typischen Szenario:

  1. Ein Client fordert ein SAML-Token von einem Sicherheitstokendienst an und authentifiziert diesen Sicherheitstokendienst mithilfe von Windows-Anmeldeinformationen.

  2. Der Sicherheitstokendienst gibt ein SAML-Token an den Client aus. Das SAML-Token ist mit einem Zertifikat signiert, das dem Sicherheitstokendienst zugeordnet ist und einen für den Zieldienst verschlüsselten Nachweisschlüssel enthält.

  3. Der Client erhält auch eine Kopie des Nachweisschlüssels. Der Client stellt dann das SAML-Token dem Anwendungsdienst (der vertrauenden Seite) vor und signiert die Nachricht mit diesem Proof Key.

  4. Die Signatur über das SAML-Token teilt der vertrauenden Seite mit, dass der Sicherheitstokendienst das Token ausgestellt hat. Die mit dem Proof Key erstellte Nachrichtensignatur teilt der vertrauenden Seite mit, dass das Token an den Client ausgestellt wurde.

Von Ansprüchen zu SamlAttributes

In WCF werden Anweisungen in SAML-Token als SamlAttribute-Objekte modelliert, die direkt aus Claim-Objekten gefüllt werden können, vorausgesetzt das Claim-Objekt hat die Right-Eigenschaft des Typs PossessProperty und die Resource-Eigenschaft des Typs String. Beispiel:

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, entweder wenn sie von einem Sicherheitstokendienst ausgestellt werden oder wenn sie von Clients als Teil der Authentifizierung an Dienste übergeben werden, muss das maximale Nachrichtengrößenkontingent ausreichend groß sein, um das SAML-Token und die anderen Nachrichtenteile aufzunehmen. In normalen Fällen sind die Standard-Nachrichtengrößenkontingente ausreichend. In Fällen, in denen ein SAML-Token groß ist, da es Hunderte von Ansprüchen enthält, müssen Sie die Kontingente möglicherweise erhöhen, um das serialisierte Token zu berücksichtigen. Weitere Informationen finden Sie unter Sicherheitsüberlegungen für Daten.

Von SamlAttributes zu Ansprüchen

Wenn SAML-Token in Nachrichten empfangen werden, werden die verschiedenen Aussagen im SAML-Token in IAuthorizationPolicy Objekte umgewandelt, die in die AuthorizationContext eingelegt werden. 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 soll

Siehe auch