SessionSecurityTokenHandler Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
A SecurityTokenHandler , který zpracovává tokeny zabezpečení typu SessionSecurityToken.
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
- Dědičnost
- Odvozené
Příklady
Následující kód XML ukazuje, jak nahradit výchozí obslužnou rutinu tokenu zabezpečení relace v kolekci obslužné rutiny tokenu instancí MachineKeySessionSecurityTokenHandler třídy v konfiguraci.
<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>
Poznámky
Třída SessionSecurityTokenHandler serializuje, deserializuje a ověřuje tokeny relace. Tokeny relace jsou tokeny typu SessionSecurityToken. Třída SessionSecurityTokenHandler serializuje tokeny do a z formátu cookie. Ve výchozím nastavení třída serializuje tokeny do WS-Secure Conversation Feb2005 nebo WS-Secure Conversation 1.3 <wsc:SecurityContextToken> elementy. Tokeny relací používají WSFederationAuthenticationModule WSFAM a SessionAuthenticationModule SAM k ukládání informací o relaci, což je primárně ClaimsPrincipal přidružené k ověřenému uživateli a časům spuštění a vypršení platnosti relace.
V pasivních scénářích WSFederationAuthenticationModule volání do SessionAuthenticationModule (SAM) z ověřovacího kanálu vytvoří token relace z ClaimsPrincipal ověřeného uživatele. SAM používá nakonfigurovaný SessionSecurityTokenHandler k vytvoření tokenu a k jeho serializaci do souboru cookie (a k deserializaci tokenu ze souboru cookie při následných požadavcích). SAM používá instanci své nakonfigurované CookieHandler třídy k zápisu souboru cookie zpět do odpovědi HTTP. Tento soubor cookie se pak vrátí klientovi a při následných požadavcích může klient předložit soubor cookie, nikoli provést zpáteční cestu zpět zprostředkovateli identity, aby znovu získal token zabezpečení. Další informace o tom, jak relace fungují s WIF, naleznete v tématu Správa relací WIF.
Poznámka:
Element <konfigurace securityTokenHandlers> lze použít k určení SessionSecurityTokenHandler , která má odpovědnost za zabezpečení relací aplikace. Vývojáři by při změně tohoto nastavení konfigurace měli postupovat opatrně, protože chybný systém by mohl způsobit ohrožení zabezpečení aplikace. Například zadání odvozené SessionSecurityTokenHandler a předání prázdné transformace (CookieTransform) kolekce do základu by vedlo k serializaci identity uživatelů do souboru cookie, který nebyl chráněn. To by útočníkovi mohlo umožnit úpravu identity, a proto změnit přístupová oprávnění.
Pokud je token relace v referenčním režimu, tj. jeho SessionSecurityToken.IsReferenceMode vlastnost je true, obslužná rutina tokenu relace pouze serializuje vlastnosti tokenu relace potřebné k opětovnému vygenerování jeho klíče v SessionSecurityTokenCache. Ve výchozím případě SessionSecurityTokenCacheKey se třída používá k reprezentaci klíčů mezipaměti a obslužná rutina tokenu SessionSecurityToken.ContextId zapíše a SessionSecurityToken.KeyGeneration vlastnosti tokenu. Pokud token relace není v referenčním režimu, SessionSecurityToken.IsReferenceMode tj. vlastnost je false, pak kromě dříve uvedených vlastností obslužná rutina vyvolá ApplyTransforms metodu na bajtové pole serializované z tokenu a uloží výslednou hodnotu také do souboru cookie. Další podrobnosti o serializaci tokenu naleznete v SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) metodě.
Vlastnost Transforms získá seznam transformací, které jsou použity na token relace v ApplyTransforms metodě. Všechny transformace jsou odvozeny od CookieTransform třídy. Ve výchozím nastavení se DeflateCookieTransform použije a ProtectedDataCookieTransform použije se. K ProtectedDataCookieTransform ochraně materiálu souborů cookie se používá rozhraní API pro ochranu dat (DPAPI). Rozhraní DPAPI používá klíč specifický pro počítač, na kterém běží ve svých algoritmech ochrany. Z tohoto důvodu není výchozí obslužná rutina tokenu relace použitelná ve scénářích webové farmy, protože v takových scénářích může být potřeba číst tokeny zapsané na jednom počítači. Tento problém můžete obejít pomocí mnoha strategií. Například můžete:
Nahraďte výchozí hodnotu SessionSecurityTokenHandlerMachineKeySessionSecurityTokenHandlerhodnotou . Umožňuje MachineKeySessionSecurityTokenHandler zadat podpisové a šifrovací klíče pod elementem ASP.NET
<machineKey>v konfiguračním souboru.Zadejte obslužnou rutinu události FederatedAuthentication.FederationConfigurationCreated v souboru global.asax.cs a nahraďte výchozí obslužnou rutinu tokenu relace instancí SessionSecurityTokenHandler , která obsahuje seznam transformací, které obsahují a RsaSignatureCookieTransformRsaEncryptionCookieTransform. Novou instanci můžete vytvořit vyvoláním jednoho z konstruktorů, který přebírá seznam transformací.
Odvozujte vlastní transformaci ze CookieTransform základní třídy a pomocí výše uvedené metody ji zahrňte do seznamu transformací, které se mají použít.
Odvozujte vlastní obslužnou rutinu tokenu a SessionSecurityTokenHandler implementujte vlastní mechanismus.
Další informace o používání relací ve scénářích webové farmy naleznete v tématu WIF a webové farmy.
Je SessionSecurityTokenHandler součástí výchozí kolekce obslužné rutiny tokenu. Můžete ji však nahradit vlastní obslužnou rutinou tokenu relace tak, že nejprve zadáte< element remove> v elementu< securityTokenHandlers>, který odebere výchozí obslužnou rutinu z kolekce a pak přidá obslužnou rutinu vlastního tokenu <pomocí elementu add>. Ve výchozím nastavení můžete zadat výchozí životnost tokenu <zahrnutím sessionTokenRequirement> elementu <add> pod element. Vlastní obslužnou rutinu tokenu můžete navrhnout tak, aby převzala vlastní elementy konfigurace pod <add> element přepsáním LoadCustomConfiguration metody, která poskytuje logiku pro zpracování.
Konstruktory
| Name | Description |
|---|---|
| SessionSecurityTokenHandler() |
Inicializuje novou instanci SessionSecurityTokenHandler třídy, která používá výchozí transformace souborů cookie a životnost tokenu. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Inicializuje novou instanci SessionSecurityTokenHandler třídy, která používá zadanou transformaci cookie a životnost tokenu. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Inicializuje novou instanci SessionSecurityTokenHandler třídy, která používá zadané transformace souborů cookie. |
Pole
| Name | Description |
|---|---|
| DefaultCookieTransforms |
Kolekce jen pro čtení, která obsahuje seznam výchozích transformací, které se použijí pro soubory cookie, a DeflateCookieTransform .ProtectedDataCookieTransform |
| DefaultLifetime |
Konstanta, která určuje výchozí životnost souborů cookie, deset hodin. |
Vlastnosti
| Name | Description |
|---|---|
| CanValidateToken |
Získá hodnotu, která označuje, zda tato obslužná rutina podporuje ověřování tokenů typu SessionSecurityToken. |
| CanWriteToken |
Získá hodnotu, která označuje, zda tato obslužná rutina může zapisovat tokeny typu SessionSecurityToken. |
| Configuration |
Získá nebo nastaví SecurityTokenHandlerConfiguration objekt, který poskytuje konfiguraci pro aktuální instanci. (Zděděno od SecurityTokenHandler) |
| ContainingCollection |
Získá kolekci obslužné rutiny tokenu, která obsahuje aktuální instanci. (Zděděno od SecurityTokenHandler) |
| CookieElementName |
Získá název elementu cookie. |
| CookieNamespace |
Získá obor názvů pro element cookie. |
| DefaultTokenLifetime |
Získá výchozí životnost tokenu. |
| TokenLifetime |
Získá nebo nastaví životnost tokenu. |
| TokenType |
Získá typ tokenů, které tato obslužná rutina zpracovává. |
| Transforms |
Získá transformace, které se použijí na soubor cookie. |
Metody
| Name | Description |
|---|---|
| ApplyTransforms(Byte[], Boolean) |
Použije transformace určené Transforms vlastností pro kódování nebo dekódování zadaného souboru cookie. |
| CanReadKeyIdentifierClause(XmlReader) |
Vrátí hodnotu, která určuje, zda xml element odkazovaný zadaným čtečkou XML je klauzule identifikátor klíče, která může být deserializována touto instancí. (Zděděno od SecurityTokenHandler) |
| CanReadToken(String) |
Vrátí hodnotu, která určuje, zda zadaný řetězec lze deserializovat jako token typu zpracovávaného touto instancí. (Zděděno od SecurityTokenHandler) |
| CanReadToken(XmlReader) |
Vrátí hodnotu, která určuje, zda je čtenář umístěn v |
| CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Vrátí hodnotu, která určuje, zda zadaná klauzule identifikátoru klíče může být serializována touto instancí. (Zděděno od SecurityTokenHandler) |
| CreateSecurityTokenReference(SecurityToken, Boolean) |
Při přepsání v odvozené třídě vytvoří odkaz tokenu zabezpečení pro tokeny zpracovávané danou třídou. Tato metoda se obvykle volá službou tokenů zabezpečení (STS). (Zděděno od SecurityTokenHandler) |
| CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
SessionSecurityToken Vytvoří na základě zadaného objektu zabezpečení deklarací identity a časového rozsahu, během kterého je token platný. |
| CreateToken(SecurityTokenDescriptor) |
Vytvoří token zabezpečení na základě zadaného popisovače tokenu. |
| DetectReplayedToken(SecurityToken) |
Při přepsání v odvozené třídě vyvolá výjimku, pokud je zadaný token zjištěn jako přehrání. (Zděděno od SecurityTokenHandler) |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetTokenTypeIdentifiers() |
Získá identifikátory URI typu tokenu pro typy tokenů, které lze zpracovat touto obslužnou rutinou. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| LoadCustomConfiguration(XmlNodeList) |
Načte vlastní konfiguraci z XML. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ReadKeyIdentifierClause(XmlReader) |
Při přepsání v odvozené třídě deserializuje XML odkazovaný zadaným čtenářem XML na klauzuli identifikátoru klíče, která odkazuje na token zpracovaný odvozenou třídou. (Zděděno od SecurityTokenHandler) |
| ReadToken(Byte[], SecurityTokenResolver) |
SessionSecurityToken Načte ze streamu bajtů pomocí zadaného překladače tokenů. |
| ReadToken(String) |
Při přepsání v odvozené třídě deserializuje zadaný řetězec na token typu zpracovaného odvozenou třídou. (Zděděno od SecurityTokenHandler) |
| ReadToken(XmlReader, SecurityTokenResolver) |
Přečte pomocí SessionSecurityToken zadané čtečky XML a překladače tokenů. |
| ReadToken(XmlReader) |
Přečte pomocí SessionSecurityToken zadané čtečky XML. |
| SetTransforms(IEnumerable<CookieTransform>) |
Nastaví transformace, které se použijí na soubory cookie. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| TraceTokenValidationFailure(SecurityToken, String) |
Trasuje událost selhání během ověřování tokenů zabezpečení při povolení trasování. (Zděděno od SecurityTokenHandler) |
| TraceTokenValidationSuccess(SecurityToken) |
Trasuje úspěšné ověření události tokenů zabezpečení při povolení trasování. (Zděděno od SecurityTokenHandler) |
| ValidateSession(SessionSecurityToken) |
Určuje, zda relace přidružená k zadanému tokenu je stále platná. Platnost je určena kontrolou ValidFrom a ValidTo vlastnostmi zadaného tokenu. Pokud relace již není platná, vyvolá se výjimka. |
| ValidateToken(SecurityToken) |
Ověří zadaný token a vrátí jeho deklarace identity. |
| ValidateToken(SessionSecurityToken, String) |
Ověří zadaný token relace a vrátí jeho deklarace identity. |
| WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Při přepsání v odvozené třídě serializuje zadanou klauzuli identifikátoru klíče do XML. Klauzule identifikátoru klíče musí být typu podporovaného odvozenou třídou. (Zděděno od SecurityTokenHandler) |
| WriteToken(SecurityToken) |
Při přepsání v odvozené třídě serializuje zadaný token zabezpečení na řetězec. Token musí být typu zpracovávaného odvozenou třídou. (Zděděno od SecurityTokenHandler) |
| WriteToken(SessionSecurityToken) |
Serializuje zadaný token do bajtového pole. |
| WriteToken(XmlWriter, SecurityToken) |
Serializuje zadaný token pomocí zadaného zapisovače XML. |