SAML-Token und SAML-Ansprüche
Security Assertions Markup Language (SAML)-Token sind XML-Darstellungen von Ansprüchen. Standardmäßig sind von Windows Communication Foundation (WCF) in Verbundsicherheitsszenarien verwendete SAML-Token ausgestellte Token.
SAML-Token enthalten Anweisungen, die Sets mit Ansprüchen sind, die von einer Entität über eine andere Entität gemacht wurden. In Verbundsicherheitsszenarien werden Anweisungen beispielsweise von einem Sicherheitstokendienst über einen Benutzer im System getroffen. Der Sicherheitstokendienst signiert das SAML-Token, um die Richtigkeit der Anweisungen im Token zu bestätigen. 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ß. Dieser Beleg reicht aus, um die vertrauende Seite zu überzeugen, dass das SAML-Token tatsächlich für diesen Benutzer ausgestellt wurde. Ein typisches Szenario sieht folgendermaßen aus:
Ein Client fordert einen SAML-Token von einem Sicherheitstokendienst an, wobei er sich bei diesem Dienst mit den Windows-Anmeldeinformationen authentifiziert.
Der Sicherheitstokendienst stellt dem Client einen SAML-Token aus. 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.
Der Client empfängt auch eine Kopie des Prüfschlüssels. Der Client übergibt das SAML-Token dann an den Anwendungsdienst (die vertrauende Seite) und signiert die Nachricht mit diesem Prüfschlüssel.
Die Signatur über dem SAML-Token zeigt der vertrauenden Seite, dass der Sicherheitstokendienst das Token ausgestellt hat. Die mit dem Prüfschlüssel erstellte Nachrichtensignatur zeigt der vertrauenden Seite, dass das Token für 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 dieRight-Eigenschaft des Typs PossessProperty und die Resource-Eigenschaft des Typs String. Beispiel:
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)
Claim myClaim = new Claim(
ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = 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. Normalerweise ist das Kontingent für Nachrichten in Standardgröße ausreichend. 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. Weitere Informationen finden Sie unter Sicherheitsüberlegungen zu Daten. |
Von SamlAttributes zu Ansprüchen
Wenn SAML-Token in Nachrichten empfangen werden, werden die unterschiedlichen Anweisungen im SAML-Token in IAuthorizationPolicy-Objekte umgewandelt, die in den AuthorizationContext gesetzt 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
Aufgaben
Vorgehensweise: Erstellen eines Verbundclients
Vorgehensweise: Konfigurieren von Anmeldeinformationen auf einem Verbunddienst
Vorgehensweise: Erstellen eines benutzerdefinierten Anspruchs
Verweis
AuthorizationContext
IAuthorizationPolicy
ClaimSet
Konzepte
Verbund
Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell
Ansprüche und Token
Erstellen von Ansprüchen und Ressourcenwerte