SessionAuthenticationModule Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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. |