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
- Наследование
Примеры
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 |
Возникает, если во время выхода из системы происходит ошибка. |