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 файлы cookie сеансов обрабатываются в WS-Federation сценариях. Он использует обработчик cookie, указанный CookieHandler свойством, для чтения необработанного файла cookie сеанса из HTTP-запроса и записи его в http-ответ. В нем используется SessionSecurityTokenHandler настройка приложения для десериализации файла cookie необработанного сеанса в SessionSecurityToken объекты. Маркер безопасности сеанса содержит утверждения () и субъект (ClaimClaimsPrincipal), связанные с сущностью, для которой обслуживается запрос.
SAM добавляет его OnAuthenticateRequest обработчик HttpApplication.AuthenticateRequest событий в событие в конвейере ASP.NET. Этот обработчик перехватывает запросы на вход и, если есть файл cookie сеанса, десериализирует его в маркер сеанса и задает Thread.CurrentPrincipalHttpContext.User для субъекта утверждений субъект утверждений, содержащийся в маркере сеанса. Он вызывает несколько других методов, предоставляемых SAM во время этого процесса.
Метод SignOut можно вызвать для выхода пользователя из сеанса (например, в файле SignOut.aspx.cs кода программной части).
SAM предоставляет несколько событий, которые предоставляют доступ к конвейеру обработки. SessionSecurityTokenCreated События SessionSecurityTokenReceived позволяют изменять маркеры сеанса, которые считываются из файлов cookie или создаются во время обработки. Как правило, это делается для добавления, удаления или преобразования утверждений в маркере или корректировки срока действия. SignedOutСобытия SigningOutи 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 из указанного файла 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 |
Возникает при возникновении ошибки во время выхода. |