SessionSecurityTokenHandler 类

定义

SecurityTokenHandler类型的 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
继承
SessionSecurityTokenHandler
派生

示例

以下 XML 演示如何将令牌处理程序集合中的默认会话安全令牌处理程序替换为配置中的 类的 MachineKeySessionSecurityTokenHandler 实例。

<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>

注解

SessionSecurityTokenHandler 序列化、反序列化和验证会话令牌。 会话令牌是 类型的 SessionSecurityToken令牌。 类 SessionSecurityTokenHandler 将令牌序列化为 Cookie 格式和从 Cookie 格式序列化令牌。 默认情况下,类将令牌序列化为 WS-Secure Conversation Feb2005 或 WS-Secure Conversation 1.3 <wsc:SecurityContextToken> 元素。 (WSFAM) 和 SessionAuthenticationModule (SAM) 使用WSFederationAuthenticationModule会话令牌来存储有关会话的信息,这主要是ClaimsPrincipal与经过身份验证的用户以及会话开始和过期时间关联的。

在被动方案中, WSFederationAuthenticationModule 调用 SessionAuthenticationModule (SAM) 身份验证管道,以从 ClaimsPrincipal 表示经过身份验证的用户的 创建会话令牌。 SAM 使用其配置 SessionSecurityTokenHandler 来创建令牌并将其序列化为 cookie (,并在后续请求) 对 cookie 中的令牌进行反序列化。 SAM 使用其配置 CookieHandler 类的实例将 Cookie 写回到 HTTP 响应。 然后,此 Cookie 将返回到客户端,在后续请求中,客户端可以提供 Cookie,而不是往返于标识提供者以重新获取安全令牌。 有关会话如何使用 WIF 运行的详细信息,请参阅 WIF 会话管理

注意

<securityTokenHandlers> 配置元素可用于指定SessionSecurityTokenHandler负责保护应用程序会话的 。 开发人员在更改此配置设置时应谨慎,因为系统配置错误可能会导致应用程序泄露。 例如,指定派生 SessionSecurityTokenHandler 并将一个空转换 (CookieTransform) 集合传递到基集合,将导致用户标识被序列化为不受保护的 Cookie。 这可能允许攻击者修改标识,从而更改访问权限。

如果会话令牌处于引用模式,即其 SessionSecurityToken.IsReferenceMode 属性为 true,则会话令牌处理程序仅序列化会话令牌的属性,这些属性是在 中 SessionSecurityTokenCache重新生成其密钥所需的。 在默认情况下, SessionSecurityTokenCacheKey 类用于表示缓存密钥,令牌处理程序写入 SessionSecurityToken.ContextId 令牌的 和 SessionSecurityToken.KeyGeneration 属性。 如果会话令牌不处于引用模式,即 SessionSecurityToken.IsReferenceMode 属性为 false,那么除了前面提到的属性外,处理程序还会在从令牌序列化的字节数组上调用 ApplyTransforms 方法,并将生成的值存储在 Cookie 中。 有关如何序列化令牌的更多详细信息,请参阅 SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) 方法。

属性 Transforms 获取应用于 方法中的 ApplyTransforms 会话令牌的转换列表。 所有转换都派生自 CookieTransform 类。 在默认情况下, DeflateCookieTransform 应用 和 ProtectedDataCookieTransform 。 使用 ProtectedDataCookieTransform 数据保护 API (DPAPI) 来保护 Cookie 材料。 DPAPI 使用特定于在其保护算法中运行它的计算机的密钥。 因此,默认会话令牌处理程序在 Web 场方案中不可用,因为在这种情况下,可能需要在另一台计算机上读取写入的令牌。 可以使用多种策略来规避此问题。 例如,你能够:

有关在 Web 场方案中使用会话的详细信息,请参阅 WIF 和 Web 场

包含在SessionSecurityTokenHandler默认令牌处理程序集合中;但是,可以通过先在 securityTokenHandlers> 元素下<指定 <remove> 元素以从集合中删除默认处理程序,然后使用 add> 元素添加自定义令牌处理程序,将其替换为自定义会话令牌处理程序<。 默认情况下,可以通过在 元素下<add>包括 <sessionTokenRequirement> 元素来指定默认令牌生存期。 可以通过重写 LoadCustomConfiguration 方法来设计自定义令牌处理程序,以在 元素下<add>获取自定义配置元素,以提供用于处理这些元素的逻辑。

构造函数

SessionSecurityTokenHandler()

初始化使用默认 Cookie 转换和令牌生存期的 SessionSecurityTokenHandler 类的新实例。

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>)

初始化使用指定的 cookie 转换 SessionSecurityTokenHandler 类的新实例。

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan)

初始化使用指定 Cookie 转换和令牌生存期的 SessionSecurityTokenHandler 类的新实例。

字段

DefaultCookieTransforms

一个只读集合,它包含要应用于 Cookie(DeflateCookieTransformProtectedDataCookieTransform)的默认转换的列表。

DefaultLifetime

一个常量,它指定 Cookie 的默认生存期为 10 小时。

属性

CanValidateToken

获取一个值,该值指示此处理程序是否支持对 SessionSecurityToken 类型的标记进行验证。

CanWriteToken

获取指示此处理程序能否写入 SessionSecurityToken 类型的标记的值。

Configuration

获取或设置提供配置当前实例的 SecurityTokenHandlerConfiguration 对象。

(继承自 SecurityTokenHandler)
ContainingCollection

获取包含当前实例的标记处理程序集合。

(继承自 SecurityTokenHandler)
CookieElementName

获取 Cookie 元素的名称。

CookieNamespace

获取 Cookie 元素的命名空间。

DefaultTokenLifetime

获取默认的令牌生存期。

TokenLifetime

获取或设置标记生存期。

TokenType

获取此处理程序处理的标记的类型。

Transforms

获取要应用在 cookie 上的转换。

方法

ApplyTransforms(Byte[], Boolean)

Transforms 属性指定的转换应用于对指定 Cookie 进行编码或解码。

CanReadKeyIdentifierClause(XmlReader)

返回指示由指定 XML 读取器引用的 XML 元素是否为由此实例反序列化的关键标识符子句的值。

(继承自 SecurityTokenHandler)
CanReadToken(String)

返回指示指定字符串是否可以作为由此实例处理类型标记的反序列化的值。

(继承自 SecurityTokenHandler)
CanReadToken(XmlReader)

返回一个值,该值指示读取器是否放置于 <wsc:SecurityContextToken> 元素处。

CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

返回指示指定的密钥标识符子句是否可以由此实例序列化的值。

(继承自 SecurityTokenHandler)
CreateSecurityTokenReference(SecurityToken, Boolean)

当在派生类中重写,为该类处理的标记创建安全标记引用。 通常通过安全标记服务 (STS) 调用此方法。

(继承自 SecurityTokenHandler)
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime)

创建基于指定声明主体和时间范围(在此时间范围内标记有效)的 SessionSecurityToken

CreateToken(SecurityTokenDescriptor)

创建基于指定标记描述符的安全令牌。

DetectReplayedToken(SecurityToken)

当在派生类中重写时,如果重播时标记删除,将引发异常。

(继承自 SecurityTokenHandler)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetTokenTypeIdentifiers()

获取由处理程序处理的标记类型的标记标识符 URI。

GetType()

获取当前实例的 Type

(继承自 Object)
LoadCustomConfiguration(XmlNodeList)

从 XML 加载自定义的配置。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ReadKeyIdentifierClause(XmlReader)

当在派生类中重写时,使用指定 XML 读取器将 XML 引用的反序列化为由该类处理的主要标志符子句。

(继承自 SecurityTokenHandler)
ReadToken(Byte[], SecurityTokenResolver)

通过使用指定的标记解析器从字节流读取 SessionSecurityToken

ReadToken(String)

当在派生类中重写时,由派生类反序列化类型处理的指定字符串。

(继承自 SecurityTokenHandler)
ReadToken(XmlReader)

使用指定的 XML 读取器读取 SessionSecurityToken

ReadToken(XmlReader, SecurityTokenResolver)

使用指定的 XML 读取器和标记解析程序读取 SessionSecurityToken

SetTransforms(IEnumerable<CookieTransform>)

设置要应用在 cookie 上的转换。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
TraceTokenValidationFailure(SecurityToken, String)

当启用跟踪时,在安全标记的验证过程跟踪失败事件。

(继承自 SecurityTokenHandler)
TraceTokenValidationSuccess(SecurityToken)

当启用跟踪时,跟踪安全标记事件的成功验证。

(继承自 SecurityTokenHandler)
ValidateSession(SessionSecurityToken)

确定与指定标记相关联的会话是否有效。 通过检查指定标记的 ValidFromValidTo 确定有效性。 如果该会话不再有效,则引发异常。

ValidateToken(SecurityToken)

验证指定的令牌并返回其声明。

ValidateToken(SessionSecurityToken, String)

验证指定的会话令牌并返回其声明。

WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

在派生类中重写时,将密钥标识符子句序列化到 XML。 密钥标识符子句必须是派生类支持的类型。

(继承自 SecurityTokenHandler)
WriteToken(SecurityToken)

在派生类中重写时,将指定安全标记列化到字符串。 该标记必须是派生类处理的类型。

(继承自 SecurityTokenHandler)
WriteToken(SessionSecurityToken)

将指定令牌序列化为字节数组。

WriteToken(XmlWriter, SecurityToken)

使用指定 XML 编写器序列化指定令牌。

适用于

另请参阅