SessionAuthenticationModule Класс

Определение

Реализует модуль ASP.NET, обрабатывающий сеансовые файлы cookie в сценариях WS-Federation.

public ref class SessionAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class SessionAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type SessionAuthenticationModule = class
    inherit HttpModuleBase
Public Class SessionAuthenticationModule
Inherits HttpModuleBase
Наследование
SessionAuthenticationModule

Примеры

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup

    //SUBSCRIBE TO SAM EVENTS
    FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenCreated);
    FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived += new EventHandler<SessionSecurityTokenReceivedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenReceived);
    FederatedAuthentication.SessionAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(SessionAuthenticationModule_SigningOut);
    FederatedAuthentication.SessionAuthenticationModule.SignedOut += new EventHandler(SessionAuthenticationModule_SignedOut);
    FederatedAuthentication.SessionAuthenticationModule.SignOutError += new EventHandler<ErrorEventArgs>(SessionAuthenticationModule_SignOutError);
}
void SessionAuthenticationModule_SignOutError(object sender, ErrorEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SignOutError event");
}

void SessionAuthenticationModule_SignedOut(object sender, EventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SignedOut event");
}

void SessionAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SigningOut event");
}

void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenReceived event");
}

void SessionAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
    //Store session on the server-side token cache instead writing the whole token to the cookie.
    //It may improve throughput but introduces server affinity that may affect scalability
    FederatedAuthentication.SessionAuthenticationModule.IsReferenceMode = true;
}

В следующем XML-коде показано, как настроить SAM в конвейере ASP.NET. Многие другие элементы, присутствующие в типичной конфигурации, опущены здесь для краткости.

<configuration>  
  <system.webServer>  
    <modules>  
      <!--WIF 4.5 modules -->  
      <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  
      <add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  
    </modules>  
  </system.webServer>  
</configuration>  

Комментарии

При наличии в конвейере SessionAuthenticationModule ASP.NET (SAM) обрабатывает файлы cookie сеанса в WS-Federation сценариях. Он использует обработчик файлов cookie, заданный CookieHandler свойством , для чтения необработанного файла cookie сеанса из HTTP-запроса и записи его в HTTP-ответ. Он использует SessionSecurityTokenHandler , настроенный для приложения для десериализации необработанного файла cookie сеанса в SessionSecurityToken объекты . Маркер безопасности сеанса содержит утверждения (Claim) и субъект (ClaimsPrincipal), связанные с сущностью, для которой обслуживается запрос.

SAM добавляет обработчик OnAuthenticateRequest событий к событию HttpApplication.AuthenticateRequest в конвейере ASP.NET. Этот обработчик перехватывает запросы на вход и при наличии файла cookie сеанса десериализует его в маркер сеанса и задает Thread.CurrentPrincipal для свойств и HttpContext.User субъект утверждений, содержащийся в маркере сеанса. Он вызывает несколько других методов, предоставляемых SAM во время этого процесса.

Метод SignOut можно вызвать для выхода пользователя из сеанса (например, в SignOut.aspx.cs файле кода программной части).

SAM предоставляет несколько событий, которые предоставляют доступ к конвейеру обработки. События SessionSecurityTokenReceived и SessionSecurityTokenCreated позволяют изменять маркеры сеанса, которые считываются из файлов cookie или создаются во время обработки. Как правило, это делается для добавления, удаления или преобразования утверждений в маркере или для настройки срока действия. События SigningOut, SignedOutи SignOutError предоставляют перехватчики для обработки запросов на выход. Во многих сценариях достаточно просто добавить обработчики для этих событий, часто в файл global.asax.cs.

Для более сложных сценариев можно наследовать от SessionAuthenticationModule для реализации пользовательского SAM. С этой целью многие методы, которые вызываются во время OnAuthenticateRequest и SignOut , предоставляются для предоставления пользовательского поведения на определенных этапах жизненного цикла обработки сеанса.

Вы можете добавить SAM в конвейер ASP.NET в файле конфигурации, добавив его в http-модули в <system.webServer> элементе для IIS версии 7 и более поздней или в <system.web> элементе для версий, предшествующих IIS 7. Обработчик файлов cookie, используемый SAM, можно настроить с <помощью элемента cookieHandler> .

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

SessionAuthenticationModule()

Инициализирует новый экземпляр класса SessionAuthenticationModule.

Свойства

ContextSessionSecurityToken

Получает активный объект SessionSecurityToken для текущего объекта HttpContext.

CookieHandler

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

FederationConfiguration

Получает или задает объект FederationConfiguration, действующий для текущего модуля.

(Унаследовано от HttpModuleBase)
IsReferenceMode

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

Методы

AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Проверяет подлинность входящего запроса, проверяя токен входящего сеанса. После успешной проверки он обновляет текущий контекст HTTP и субъект потока с указанным SessionSecurityToken.

ContainsSessionTokenCookie(HttpCookieCollection)

Определяет, находится ли файл cookie сеанса в указанной коллекции файлов cookie.

CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean)

Создает SessionSecurityToken из определенных параметров с использованием настроенного обработчика токена сеанса.

DeleteSessionTokenCookie()

Удаляет файл cookie сеанса и удаляет его из кэша.

Dispose()

Освобождает ресурсы (за исключением памяти), используемые текущим экземпляром класса HttpModuleBase.

(Унаследовано от HttpModuleBase)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Init(HttpApplication)

Инициализирует HTTP-модуль.

(Унаследовано от HttpModuleBase)
InitializeModule(HttpApplication)

Инициализирует модуль и подготавливает его для обработки событий из объекта приложения ASP.NET модуля.

InitializePropertiesFromConfiguration()

Инициализирует свойства модуля на основании определений в файле конфигурации.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnAuthenticateRequest(Object, EventArgs)

AuthenticateRequest Обрабатывает событие из конвейера ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

PostAuthenticateRequest Обрабатывает событие из конвейера ASP.NET.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

Вызывает событие SessionSecurityTokenCreated.

OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs)

Вызывает событие SessionSecurityTokenReceived.

OnSignedOut(EventArgs)

Вызывает событие SignedOut.

OnSigningOut(SigningOutEventArgs)

Вызывает событие SigningOut.

OnSignOutError(ErrorEventArgs)

Вызывает событие SignOutError.

ReadSessionTokenFromCookie(Byte[])

Считывает SessionSecurityToken из заданного файла cookie сеанса.

SetPrincipalFromSessionToken(SessionSecurityToken)

Задает в качестве субъекта HttpContext и Thread субъект, содержащийся в указанном токене сеанса.

SignOut()

Выполняет выход для текущего пользователя и вызывает соответствующие события.

ToString()

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

(Унаследовано от Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

Пытается прочитать SessionSecurityToken из файла Cookie сеанса и возвращает значение, указывающее, было ли успешно чтение файла Cookie сеанса.

ValidateSessionToken(SessionSecurityToken)

Проверяет указанный объект SessionSecurityToken и возвращает его идентификаторы.

WriteSessionTokenToCookie(SessionSecurityToken)

Записывает указанный объект SessionSecurityToken в файл cookie сеанса.

События

SessionSecurityTokenCreated

Возникает при создании токена безопасности сеанса.

SessionSecurityTokenReceived

Возникает при считывании токена безопасности сеанса из файла cookie.

SignedOut

Возникает после того, как пользователь вышел из системы.

SigningOut

Возникает перед удалением сеанса входа в систему.

SignOutError

Возникает, если во время выхода из системы происходит ошибка.

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