Бөлісу құралы:


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 и из нее. По умолчанию класс сериализует маркеры в элементы WS-Secure Conversation Feb2005 или WS-Secure Conversation 1.3 <wsc:SecurityContextToken> . Маркеры сеансов используются WSFederationAuthenticationModule (WSFAM) и SessionAuthenticationModule SAM для хранения сведений о сеансе, это в первую очередь 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 использует ключ, относящийся к компьютеру, на котором он работает в своих алгоритмах защиты. По этой причине обработчик маркера сеанса по умолчанию не подходит для использования в сценариях веб-фермы, так как в таких сценариях маркеры, записанные на одном компьютере, могут потребоваться считывать на другом компьютере. Для обхода этой проблемы можно использовать множество стратегий. Например, доступны следующие возможности:

  • Замените значение по умолчанию SessionSecurityTokenHandler параметром MachineKeySessionSecurityTokenHandler. Позволяет MachineKeySessionSecurityTokenHandler указать ключи подписывания и шифрования в элементе ASP.NET <machineKey> в файле конфигурации.

  • Предоставьте обработчик события FederatedAuthentication.FederationConfigurationCreated в файле global.asax.cs и замените обработчик маркера сеанса по умолчанию экземпляром SessionSecurityTokenHandler , который содержит список преобразований, включая RsaSignatureCookieTransform и RsaEncryptionCookieTransform. Новый экземпляр можно создать, вызвав один из конструкторов, который принимает список преобразований.

  • Наследуйте пользовательское преобразование из CookieTransform базового класса и используйте приведенный выше метод, чтобы включить его в список примененных преобразований.

  • Наследуйте пользовательский обработчик маркеров и SessionSecurityTokenHandler реализуйте собственный механизм.

Дополнительные сведения об использовании сеансов в сценариях веб-ферм см. в разделе WIF и веб-фермы.

Он SessionSecurityTokenHandler включен в коллекцию обработчиков маркеров по умолчанию. Однако его можно заменить пользовательским обработчиком маркеров сеанса, сначала указав <элемент remove> под элементом <securityTokenHandlers> , чтобы удалить обработчик по умолчанию из коллекции, а затем добавить обработчик пользовательского маркера с помощью <элемента добавления> . По умолчанию можно указать время существования маркера по умолчанию, включив <элемент sessionTokenRequirement> в <add> элемент. Вы можете разработать пользовательский обработчик маркеров для принятия пользовательских элементов конфигурации в <add> элементе, переопределив LoadCustomConfiguration метод, чтобы предоставить логику для их обработки.

Конструкторы

Имя Описание
SessionSecurityTokenHandler()

Инициализирует новый экземпляр SessionSecurityTokenHandler класса, использующего преобразования cookie по умолчанию и время существования маркера.

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan)

Инициализирует новый экземпляр SessionSecurityTokenHandler класса, использующего указанные преобразования cookie и время существования маркера.

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>)

Инициализирует новый экземпляр SessionSecurityTokenHandler класса, использующего указанные преобразования cookie.

Поля

Имя Описание
DefaultCookieTransforms

Коллекция только для чтения, содержащая список преобразований по умолчанию, применяемых к файлам cookie, DeflateCookieTransform а также к ProtectedDataCookieTransformфайлам cookie.

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, SecurityTokenResolver)

Считывает указанный SessionSecurityToken средство чтения XML и сопоставителя маркеров.

ReadToken(XmlReader)

Считывает указанный SessionSecurityToken модуль чтения XML.

SetTransforms(IEnumerable<CookieTransform>)

Задает преобразования, которые будут применены к файлам cookie.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TraceTokenValidationFailure(SecurityToken, String)

Трассирует событие сбоя во время проверки маркеров безопасности при включении трассировки.

(Унаследовано от SecurityTokenHandler)
TraceTokenValidationSuccess(SecurityToken)

Трассирует успешную проверку события маркеров безопасности при включении трассировки.

(Унаследовано от SecurityTokenHandler)
ValidateSession(SessionSecurityToken)

Определяет, является ли сеанс, связанный с указанным маркером, по-прежнему допустимым. Допустимость определяется путем проверки ValidFrom и ValidTo свойств указанного токена. Исключение возникает, если сеанс больше недействителен.

ValidateToken(SecurityToken)

Проверяет указанный токен и возвращает свои утверждения.

ValidateToken(SessionSecurityToken, String)

Проверяет указанный маркер сеанса и возвращает свои утверждения.

WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

При переопределении в производном классе сериализует указанное предложение идентификатора ключа в XML. Предложение идентификатора ключа должно иметь тип, поддерживаемый производным классом.

(Унаследовано от SecurityTokenHandler)
WriteToken(SecurityToken)

При переопределении в производном классе сериализует указанный маркер безопасности в строку. Маркер должен иметь тип, обработанный производным классом.

(Унаследовано от SecurityTokenHandler)
WriteToken(SessionSecurityToken)

Сериализует указанный токен в массив байтов.

WriteToken(XmlWriter, SecurityToken)

Сериализует указанный токен с помощью указанного модуля записи XML.

Применяется к

См. также раздел