Udostępnij za pośrednictwem


SessionAuthenticationModule Klasa

Definicja

Implementuje moduł ASP.NET, który przetwarza pliki cookie sesji w scenariuszach 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
Dziedziczenie
SessionAuthenticationModule

Przykłady

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;
}

Poniższy kod XML pokazuje, jak skonfigurować protokół SAM w potoku ASP.NET. W tym miejscu pominięto wiele innych elementów, które znajdują się w typowej konfiguracji, co zapewnia zwięzłość.

<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>  

Uwagi

W przypadku obecności w potoku SessionAuthenticationModule ASP.NET (SAM) przetwarza pliki cookie sesji w scenariuszach WS-Federation. Używa programu obsługi plików cookie określonego CookieHandler przez właściwość do odczytywania nieprzetworzonego pliku cookie sesji z żądania HTTP i zapisywania go w odpowiedzi HTTP. Używa on skonfigurowanego SessionSecurityTokenHandler dla aplikacji do deserializacji nieprzetworzonego pliku cookie sesji do SessionSecurityToken obiektów. Token zabezpieczający sesji zawiera oświadczenia (Claim) i podmiot zabezpieczeń (ClaimsPrincipal) skojarzone z jednostką, dla której jest obsługiwane żądanie.

Sam dodaje procedurę OnAuthenticateRequestHttpApplication.AuthenticateRequest obsługi zdarzeń do zdarzenia w potoku ASP.NET. Ta procedura obsługi przechwytuje żądania logowania, a jeśli istnieje plik cookie sesji, deserializuje je do tokenu sesji i ustawia Thread.CurrentPrincipal właściwości i HttpContext.User na podmiot zabezpieczeń oświadczeń zawartych w tokenie sesji. Wywołuje kilka innych metod uwidocznionych przez sam podczas tego procesu.

Metodę SignOut można wywołać w celu wylogowania użytkownika z sesji (na przykład w pliku SignOut.aspx.cs pliku za pomocą kodu).

Sam uwidacznia kilka zdarzeń, które zapewniają dostęp do potoku przetwarzania. Zdarzenia SessionSecurityTokenReceived i SessionSecurityTokenCreated umożliwiają modyfikowanie tokenów sesji odczytywanych z plików cookie lub tworzonych podczas przetwarzania. Zazwyczaj odbywa się to w celu dodawania, usuwania lub przekształcania oświadczeń w tokenie lub dostosowywania czasu wygaśnięcia. Zdarzenia SigningOut, SignedOuti SignOutError zapewniają punkty zaczepienia w przetwarzaniu żądań wylogowyywania. W wielu scenariuszach wystarczy dodać programy obsługi dla tych zdarzeń, często do pliku global.asax.cs, wystarczy.

W przypadku bardziej skomplikowanych scenariuszy można utworzyć metodę SessionAuthenticationModule , aby zaimplementować niestandardowy protokół SAM. W tym celu wiele metod wywoływanych podczas i OnAuthenticateRequestSignOut jest uwidocznionych, aby zapewnić niestandardowe zachowanie na określonych etapach cyklu życia przetwarzania sesji.

Protokół SAM można dodać do potoku ASP.NET w pliku konfiguracji, dodając go do modułów HTTP w <system.webServer> obszarze elementu dla usług IIS w wersji 7 lub nowszej <system.web> lub w ramach elementu dla wersji wcześniejszych niż IIS 7. Program obsługi plików cookie używany przez sam można skonfigurować za pomocą <elementu cookieHandler> .

Konstruktory

SessionAuthenticationModule()

Inicjuje nowe wystąpienie klasy SessionAuthenticationModule.

Właściwości

ContextSessionSecurityToken

Pobiera wartość aktywną SessionSecurityToken dla bieżącego HttpContextelementu .

CookieHandler

Pobiera program obsługi plików cookie używany do odczytywania, zapisywania i usuwania plików cookie sesji.

FederationConfiguration

Pobiera lub ustawia FederationConfiguration obiekt, który działa dla bieżącego modułu.

(Odziedziczone po HttpModuleBase)
IsReferenceMode

Pobiera lub ustawia wartość określającą, czy informacje o sesji (wartości oświadczeń itp.) powinny być przechowywane w pliku cookie sesji lub czy zawartość sesji powinna być przechowywana po stronie serwera, używając pliku cookie do przechowywania tylko odwołania.

Metody

AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Uwierzytelnia żądanie przychodzące, sprawdzając token sesji przychodzącej. Po pomyślnej weryfikacji aktualizuje bieżący kontekst HTTP i podmiot zabezpieczeń wątku przy użyciu określonego SessionSecurityTokenelementu .

ContainsSessionTokenCookie(HttpCookieCollection)

Określa, czy plik cookie sesji znajduje się w określonej kolekcji plików cookie.

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

Tworzy element SessionSecurityToken na podstawie określonych parametrów przy użyciu skonfigurowanego programu obsługi tokenu sesji.

DeleteSessionTokenCookie()

Usuwa plik cookie sesji i usuwa go z pamięci podręcznej.

Dispose()

Zwalnia zasoby (z wyjątkiem pamięci) używane przez bieżące wystąpienie HttpModuleBase klasy.

(Odziedziczone po HttpModuleBase)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
Init(HttpApplication)

Inicjuje moduł HTTP.

(Odziedziczone po HttpModuleBase)
InitializeModule(HttpApplication)

Inicjuje moduł i przygotowuje go do obsługi zdarzeń z obiektu aplikacji ASP.NET modułu.

InitializePropertiesFromConfiguration()

Inicjuje właściwości modułu na podstawie definicji w pliku konfiguracji.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnAuthenticateRequest(Object, EventArgs)

AuthenticateRequest Obsługuje zdarzenie z potoku ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

PostAuthenticateRequest Obsługuje zdarzenie z potoku ASP.NET.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

SessionSecurityTokenCreated Zgłasza zdarzenie.

OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs)

SessionSecurityTokenReceived Zgłasza zdarzenie.

OnSignedOut(EventArgs)

SignedOut Zgłasza zdarzenie.

OnSigningOut(SigningOutEventArgs)

SigningOut Zgłasza zdarzenie.

OnSignOutError(ErrorEventArgs)

SignOutError Zgłasza zdarzenie.

ReadSessionTokenFromCookie(Byte[])

Odczytuje element SessionSecurityToken z określonego pliku cookie sesji.

SetPrincipalFromSessionToken(SessionSecurityToken)

Ustawia podmiot zabezpieczeń w obiekcie HttpContext i Thread na podmiot zabezpieczeń zawarty w określonym tokenie sesji.

SignOut()

Podpisuje bieżącego użytkownika i zgłasza skojarzone zdarzenia.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

Próbuje odczytać plik SessionSecurityToken cookie sesji i zwraca wartość wskazującą, czy plik cookie sesji został pomyślnie odczytany.

ValidateSessionToken(SessionSecurityToken)

Sprawdza poprawność określonego SessionSecurityToken elementu i zwraca jego tożsamości.

WriteSessionTokenToCookie(SessionSecurityToken)

Zapisuje określony SessionSecurityToken plik cookie sesji.

Zdarzenia

SessionSecurityTokenCreated

Występuje po utworzeniu tokenu zabezpieczającego sesji.

SessionSecurityTokenReceived

Występuje, gdy token zabezpieczający sesji został odczytany z pliku cookie.

SignedOut

Występuje po wylogowaniu użytkownika.

SigningOut

Występuje przed usunięciem sesji logowania.

SignOutError

Występuje, gdy podczas wylogowywanie występuje błąd.

Dotyczy