Поделиться через


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

В пассивных сценариях WSFederationAuthenticationModule вызовы ( SessionAuthenticationModule 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.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> , чтобы удалить обработчик по умолчанию из коллекции, а затем добавив пользовательский обработчик маркеров с помощью <элемента add> . По умолчанию можно указать время существования маркера по умолчанию, включив <элемент sessionTokenRequirement> в <add> элемент . Можно спроектировать обработчик пользовательских маркеров, чтобы принимать пользовательские элементы конфигурации в <add> элементе LoadCustomConfiguration , переопределив метод , чтобы предоставить логику для их обработки.

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

SessionSecurityTokenHandler()

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

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>)

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

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan)

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

Поля

DefaultCookieTransforms

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

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)

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

ReadToken(XmlReader, SecurityTokenResolver)

Считывает 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.

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

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