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 2005 或 WS-Secure Conversation 1.3 <wsc:SecurityContextToken> 元素。 會話令牌是由 WSFederationAuthenticationModule (WSFAM) 和 SessionAuthenticationModule (SAM) 用來儲存會話的相關信息,這主要是 ClaimsPrincipal 與已驗證的使用者和會話的開始和到期時間相關聯。

在被動案例中 WSFederationAuthenticationModuleSessionAuthenticationModule ,從驗證管線呼叫 (SAM) ,以從 ClaimsPrincipal 代表已驗證使用者的 建立會話令牌。 SAM 會使用其 SessionSecurityTokenHandler 設定來建立令牌,並將它串行化為cookie (,並在後續要求上從Cookie還原串行化令牌) 。 SAM 會使用其已設定 CookieHandler 類別的實例,將 Cookie 寫回 HTTP 回應。 接著,此 Cookie 會傳回給用戶端,並在後續的要求上呈現 Cookie,而不是讓身分識別提供者往返以重新取得安全性令牌。 如需會話如何使用 WIF 運作的詳細資訊,請參閱 WIF 工作階段管理

注意

securityTokenHandlers> 組<態項目可用來指定SessionSecurityTokenHandler負責保護應用程式工作階段的 。 開發人員在變更此組態設定時應該小心,因為設定錯誤的系統可能會導致應用程式遭到入侵。 例如,指定衍生 SessionSecurityTokenHandler 的 ,並將空的 Transforms (CookieTransform) 集合傳遞至基底,會導致使用者身分識別串行化為未受保護的 Cookie。 這可讓攻擊者修改身分識別,因此變更訪問許可權。

如果會話令牌處於參考模式,也就是其 SessionSecurityToken.IsReferenceMode 屬性為 true,則會話令牌處理程式只會串行化會話令牌的屬性,而該會話令牌只會在 中 SessionSecurityTokenCache重新產生其密鑰所需的屬性。 在預設案例中,類別 SessionSecurityTokenCacheKey 是用來表示快取索引鍵,而令牌處理程式會 SessionSecurityToken.ContextId 寫入令牌的 和 SessionSecurityToken.KeyGeneration 屬性。 如果會話令牌不在參考模式中,也就是說,SessionSecurityToken.IsReferenceModefalse除了先前所述的屬性之外,處理程式也會在從令牌串行化的位元組陣列上叫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()

初始化 SessionSecurityTokenHandler 類別的新執行個體,這個執行個體使用預設 cookie 轉換和權杖存留期。

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>)

初始化 SessionSecurityTokenHandler 類別的新執行個體,這個執行個體使用指定的 Cookie 轉換。

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan)

初始化 SessionSecurityTokenHandler 類別的新執行個體,這個執行個體使用指定的 cookie 轉換和權杖存留期。

欄位

DefaultCookieTransforms

唯讀集合,包含套用至 Cookie 的預設轉換清單:DeflateCookieTransformProtectedDataCookieTransform

DefaultLifetime

為 Cookie 指定預設存留期的常數 (十小時)。

屬性

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 寫入器,序列化指定的語彙基元。

適用於

另請參閱