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


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 файлы 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

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

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