SessionSecurityTokenHandler Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein SecurityTokenHandler, das Sicherheitstoken vom Typ SessionSecurityToken verarbeitet.
public ref class SessionSecurityTokenHandler : System::IdentityModel::Tokens::SecurityTokenHandler
public class SessionSecurityTokenHandler : System.IdentityModel.Tokens.SecurityTokenHandler
type SessionSecurityTokenHandler = class
inherit SecurityTokenHandler
Public Class SessionSecurityTokenHandler
Inherits SecurityTokenHandler
- Vererbung
- Abgeleitet
Beispiele
Im folgenden XML-Code wird gezeigt, wie Sie den Standardmäßigen Sitzungssicherheitstokenhandler in einer Tokenhandlerauflistung durch einen instance der -Klasse in der MachineKeySessionSecurityTokenHandler Konfiguration ersetzen.
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
Hinweise
Die SessionSecurityTokenHandler -Klasse serialisiert, deserialisiert und überprüft Sitzungstoken. Sitzungstoken sind Token vom Typ SessionSecurityToken. Die SessionSecurityTokenHandler -Klasse serialisiert die Token in und aus dem Cookieformat. Standardmäßig serialisiert die Klasse Token in WS-Secure Conversation Feb2005- oder WS-Secure Conversation 1.3-Elementen <wsc:SecurityContextToken>
. Sitzungstoken werden von der WSFederationAuthenticationModule (WSFAM) und der SessionAuthenticationModule (SAM) verwendet, um Informationen zu einer Sitzung zu speichern. Dies ist in erster Linie dem ClaimsPrincipal authentifizierten Benutzer und den Start- und Ablaufzeiten der Sitzung zugeordnet.
In passiven Szenarien ruft die WSFederationAuthenticationModuleSessionAuthenticationModule SAM-Instanz (SAM) aus der Authentifizierungspipeline auf, um ein Sitzungstoken von dem zu erstellen, das ClaimsPrincipal den authentifizierten Benutzer darstellt. Das SAM verwendet das konfigurierte SessionSecurityTokenHandler , um das Token zu erstellen und es in ein Cookie zu serialisieren (und das Token aus einem Cookie bei nachfolgenden Anforderungen deserialisieren). Das SAM verwendet eine instance der konfigurierten CookieHandler Klasse, um das Cookie zurück in die HTTP-Antwort zu schreiben. Dieses Cookie wird dann an den Client zurückgegeben, und bei nachfolgenden Anforderungen kann der Client das Cookie präsentieren, anstatt einen Roundtrip zum Identitätsanbieter zu machen, um ein Sicherheitstoken erneut abzurufen. Weitere Informationen zur Funktionsweise von Sitzungen mit WIF finden Sie unter WIF-Sitzungsverwaltung.
Hinweis
Das <SecurityTokenHandlers-Konfigurationselement> kann verwendet werden, um ein SessionSecurityTokenHandler anzugeben, das für den Schutz der Sitzungen der Anwendung verantwortlich ist. Entwickler sollten beim Ändern dieser Konfigurationseinstellung Vorsicht walten lassen, da ein falsch konfiguriertes System zu Anwendungskompromittierungen führen kann. Wenn Sie beispielsweise eine abgeleitete SessionSecurityTokenHandler Instanz angeben und eine leere Transforms-Sammlung (CookieTransform) an die Basis übergeben, wird die Benutzeridentität in ein nicht geschütztes Cookie serialisiert. Dies könnte es einem Angreifer ermöglichen, die Identität zu ändern und damit Zugriffsberechtigungen zu ändern.
Wenn sich das Sitzungstoken im Verweismodus befindet, d. h. seine SessionSecurityToken.IsReferenceMode Eigenschaft ist true
, serialisiert der Sitzungstokenhandler nur Eigenschaften des Sitzungstokens, die zum Generieren des Schlüssels in erforderlich SessionSecurityTokenCachesind. Im Standardfall wird die SessionSecurityTokenCacheKey -Klasse verwendet, um Cacheschlüssel darzustellen, und der Tokenhandler schreibt die SessionSecurityToken.ContextId Eigenschaften und SessionSecurityToken.KeyGeneration des Tokens. Wenn sich das Sitzungstoken nicht im Verweismodus befindet, d. h. die SessionSecurityToken.IsReferenceMode Eigenschaft ist false
, ruft der Handler zusätzlich zu den zuvor erwähnten Eigenschaften die ApplyTransforms -Methode für ein Bytearray auf, das aus dem Token serialisiert wurde, und speichert den resultierenden Wert ebenfalls im Cookie. Weitere Informationen zur Serialisierung des Tokens finden Sie in der SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) -Methode.
Die Transforms -Eigenschaft ruft die Liste der Transformationen ab, die auf das Sitzungstoken in der ApplyTransforms -Methode angewendet werden. Alle Transformationen werden von der CookieTransform -Klasse abgeleitet. Im Standardfall werden die DeflateCookieTransform und angewendet ProtectedDataCookieTransform . Die ProtectedDataCookieTransform verwendet die Datenschutz-API (DPAPI), um das Cookie-Material zu schützen. DPAPI verwendet in seinen Schutzalgorithmen einen Schlüssel, der für den Computer spezifisch ist, auf dem er ausgeführt wird. Aus diesem Grund ist der Standardhandler für Sitzungstoken in Webfarmszenarien nicht verwendbar, da in solchen Szenarien Token, die auf einem Computer geschrieben wurden, möglicherweise auf einem anderen Computer gelesen werden müssen. Sie können viele Strategien verwenden, um dieses Problem zu umgehen. Beispielsweise können Sie folgende Aktionen ausführen:
Ersetzen Sie den Standardwert SessionSecurityTokenHandler durch .MachineKeySessionSecurityTokenHandler Mit MachineKeySessionSecurityTokenHandler können Sie Signatur- und Verschlüsselungsschlüssel unter dem ASP.NET-Element
<machineKey>
in der Konfigurationsdatei angeben.Stellen Sie einen Handler für das FederatedAuthentication.FederationConfigurationCreated Ereignis in der global.asax.cs-Datei bereit, und ersetzen Sie den Standard-Sitzungstokenhandler durch einen instance von, der SessionSecurityTokenHandler eine Liste von Transformationen enthält, die und RsaSignatureCookieTransformRsaEncryptionCookieTransformenthält. Sie können die neue instance erstellen, indem Sie einen der Konstruktoren aufrufen, der eine Liste von Transformationen akzeptiert.
Leiten Sie eine benutzerdefinierte Transformation von der CookieTransform Basisklasse ab, und verwenden Sie die oben genannte Methode, um sie in die Liste der anzuwendenden Transformationen aufzunehmen.
Leiten Sie einen benutzerdefinierten Tokenhandler von ab SessionSecurityTokenHandler , und implementieren Sie Ihren eigenen Mechanismus.
Weitere Informationen zur Verwendung von Sitzungen in Webfarmszenarien finden Sie unter WIF und Webfarmen.
Der SessionSecurityTokenHandler ist in der Standardtokenhandlerauflistung enthalten. Sie können ihn jedoch durch einen benutzerdefinierten Sitzungstokenhandler ersetzen, indem Sie zuerst ein <remove-Element> unter dem <securityTokenHandlers-Element> angeben, um den Standardhandler aus der Auflistung zu entfernen, und dann Ihren benutzerdefinierten Tokenhandler mithilfe des <add-Elements> hinzufügen. Standardmäßig können Sie die Standardtokenlebensdauer angeben, indem Sie das <sessionTokenRequirement-Element> unter das <add>
-Element einschließen. Sie können einen benutzerdefinierten Tokenhandler entwerfen, um benutzerdefinierte Konfigurationselemente unter dem <add>
Element zu übernehmen, indem Sie die LoadCustomConfiguration -Methode überschreiben, um die Logik für die Verarbeitung bereitzustellen.
Konstruktoren
SessionSecurityTokenHandler() |
Initialisiert eine neue Instanz der SessionSecurityTokenHandler-Klasse, die die Standardcookietransformationen und Tokenlebensdauer verwendet. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Initialisiert eine neue Instanz der SessionSecurityTokenHandler-Klasse, die die angegebenen Cookietransformationen verwendet. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Initialisiert eine neue Instanz der SessionSecurityTokenHandler-Klasse, die die angegebenen Cookietransformationen und Tokenlebensdauer verwendet. |
Felder
DefaultCookieTransforms |
Eine schreibgeschützte Auflistung, die die Liste der standardmäßigen Transformationen enthält, die auf Cookies angewendet werden, DeflateCookieTransform und ProtectedDataCookieTransform . |
DefaultLifetime |
Eine Konstante, die die standardmäßige Lebensdauer für Cookies angibt, zehn Stunden. |
Eigenschaften
CanValidateToken |
Ruft einen Wert ab, der angibt, ob der Handler die Validierung von Token des Typs SessionSecurityToken unterstützt. |
CanWriteToken |
Ruft einen Wert ab, der angibt, ob dieser Handler Token des Typs SessionSecurityToken schreiben kann. |
Configuration |
Ruft das SecurityTokenHandlerConfiguration-Objekt ab, das die Konfiguration für die aktuelle Instanz bereitstellt, oder legt dieses fest. (Geerbt von SecurityTokenHandler) |
ContainingCollection |
Ruft die Token Handler-Sammlung ab, die die aktuelle Instanz beinhaltet. (Geerbt von SecurityTokenHandler) |
CookieElementName |
Ruft den Namen für das Cookie-Element ab. |
CookieNamespace |
Ruft den Namespace für das Cookie-Element ab. |
DefaultTokenLifetime |
Ruft die standardmäßige Lebensdauer des Tokens ab. |
TokenLifetime |
Übernimmt oder bestimmt die Tokenlebenszeit. |
TokenType |
Ruft den Tokentyp ab, den dieser Handler verarbeitet. |
Transforms |
Ruft Transformationen ab, die auf das Cookie angewendet wird. |
Methoden
ApplyTransforms(Byte[], Boolean) |
Wendet die von der Transforms-Eigenschaft angegebene Transformation auf das angegebene Cookie an, um es entweder zu codieren oder zu decodieren. |
CanReadKeyIdentifierClause(XmlReader) |
Gibt einen Wert zurück, der angibt, ob das XML-Element, auf das aus dem angegebenen XML-Reader verwiesen wird, eine Schlüsselbezeichnerklausel ist, die von dieser Instanz deserialisiert werden kann. (Geerbt von SecurityTokenHandler) |
CanReadToken(String) |
Gibt einen Wert zurück, der angibt, ob die angegebene Zeichenfolge als Token des Typs deserialisiert werden kann, der von dieser Instanz verarbeitet wird. (Geerbt von SecurityTokenHandler) |
CanReadToken(XmlReader) |
Gibt einen Wert zurück, der angibt, ob der Reader auf einem |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Gibt einen Wert zurück, der angibt, ob die angegebene Schlüsselbezeichnerklausel von dieser Instanz serialisiert werden kann. (Geerbt von SecurityTokenHandler) |
CreateSecurityTokenReference(SecurityToken, Boolean) |
Erstellt bei Überschreibung in einer abgeleiteten Klasse den Sicherheitstokenverweis für die von dieser Klasse verarbeiteten Token. Diese Methode wird in der Regel von einem Sicherheitstokendienst (STS) aufgerufen. (Geerbt von SecurityTokenHandler) |
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
Erstellt ein SessionSecurityToken auf der Grundlage des angegebenen Anspruchsprinzipals und dem Zeitraum, während dessen das Token gültig ist. |
CreateToken(SecurityTokenDescriptor) |
Erstellt ein Sicherheitstoken auf Grundlage des angegebenen Token-Deskriptors. |
DetectReplayedToken(SecurityToken) |
Löst beim Überschreiben in einer abgeleiteten Klasse eine Ausnahme aus, wenn das angegebene Token als wiedergegeben erkannt wird. (Geerbt von SecurityTokenHandler) |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetTokenTypeIdentifiers() |
Ruft die Tokentyp-URIs für die Tokentypen ab, die von diesem Handler verarbeitet werden können. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
LoadCustomConfiguration(XmlNodeList) |
Lädt eine benutzerdefinierte Konfiguration aus XML. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ReadKeyIdentifierClause(XmlReader) |
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse das XML, auf das durch den angegebenen XML-Reader verwiesen wird, in eine Schlüsselbezeichnerklausel, die auf ein Token verweist, das von der abgeleiteten Klasse verarbeitet wird. (Geerbt von SecurityTokenHandler) |
ReadToken(Byte[], SecurityTokenResolver) |
Liest SessionSecurityToken aus einem Bytestream unter Verwendung des angegebenen Tokenresolvers. |
ReadToken(String) |
Deserialisiert bei Überschreibung in einer abgeleiteten Klasse die angegebene Zeichenfolge in ein Token des Typs, der von der abgeleiteten Klasse verarbeitet wird. (Geerbt von SecurityTokenHandler) |
ReadToken(XmlReader) |
Liest das SessionSecurityToken-mithilfe des angegebenen XML-Readers. |
ReadToken(XmlReader, SecurityTokenResolver) |
Liest das SessionSecurityToken mithilfe des angegebenen XML-Readers und des Tokenresolvers. |
SetTransforms(IEnumerable<CookieTransform>) |
Legt Transformationen fest, die für Cookies angewendet werden. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
TraceTokenValidationFailure(SecurityToken, String) |
Verfolgt das Fehlerereignis während der Validierung von Sicherheitstoken, wenn die Ablaufverfolgung aktiviert ist. (Geerbt von SecurityTokenHandler) |
TraceTokenValidationSuccess(SecurityToken) |
Verfolgt die erfolgreiche Validierung des Sicherheitstokenereignisses, wenn die Ablaufverfolgung aktiviert ist. (Geerbt von SecurityTokenHandler) |
ValidateSession(SessionSecurityToken) |
Bestimmt, ob die Sitzung, die dem angegebenen Token zugeordnet ist, weiterhin gültig ist. Gültigkeit wird bestimmt, indem die ValidFrom und ValidTo-Eigenschaften des angegebenen Token überprüft. Eine Ausnahme wird ausgelöst, wenn die Sitzung nicht mehr gültig ist. |
ValidateToken(SecurityToken) |
Überprüft das angegebene Token und gibt seine Ansprüche zurück. |
ValidateToken(SessionSecurityToken, String) |
Überprüft das angegebene Sitzungstoken und gibt seine Forderungen zurück. |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Serialisiert beim Überschreiben in einer abgeleiteten Klasse die angegebene Schlüsselbezeichnerklausel in XML. Die Schlüsselbezeichnerklausel muss einen Typ besitzen, der von der abgeleiteten Klasse unterstützt wird. (Geerbt von SecurityTokenHandler) |
WriteToken(SecurityToken) |
Serialisiert bei Überschreibung in einer abgeleiteten Klasse das angegebene Sicherheitstoken in eine Zeichenfolge. Das Token muss von dem von der abgeleiteten Klasse verarbeiteten Typ sein. (Geerbt von SecurityTokenHandler) |
WriteToken(SessionSecurityToken) |
Serialisiert das angegebene Token in ein Bytearray. |
WriteToken(XmlWriter, SecurityToken) |
Serialisiert den angegebenen Token mit dem angegebenen XML-Writer. |