SessionAuthenticationModule Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menerapkan modul ASP.NET yang memproses cookie sesi dalam skenario 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
- Warisan
Contoh
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 berikut ini memperlihatkan cara mengonfigurasi SAM di alur ASP.NET. Banyak elemen lain yang ada dalam konfigurasi umum dihilangkan di sini untuk keringkasan.
<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>
Keterangan
Ketika ada dalam alur ASP.NET, SessionAuthenticationModule (SAM) memproses cookie sesi dalam skenario WS-Federation. Ini menggunakan handler cookie yang ditentukan oleh CookieHandler properti untuk membaca cookie sesi mentah dari permintaan HTTP dan menulisnya ke respons HTTP. Ini menggunakan yang dikonfigurasi SessionSecurityTokenHandler untuk aplikasi guna mendeserialisasi cookie sesi mentah ke dalam SessionSecurityToken objek. Token keamanan sesi berisi klaim (Claim) dan utama (ClaimsPrincipal) yang terkait dengan entitas tempat permintaan dilayani.
SAM menambahkan penanganan aktivitasnya OnAuthenticateRequest ke HttpApplication.AuthenticateRequest peristiwa di alur ASP.NET. Handler ini mencegat permintaan masuk, dan, jika ada cookie sesi, mendeserialisasikannya ke dalam token sesi, dan mengatur Thread.CurrentPrincipal properti dan HttpContext.User ke prinsip klaim yang terkandung dalam token sesi. Ini memanggil beberapa metode lain yang diekspos oleh SAM selama proses ini.
Metode SignOut ini dapat dipanggil untuk mengeluarkan pengguna dari sesi (misalnya, dalam file SignOut.aspx.cs code-behind).
SAM memaparkan beberapa peristiwa yang menyediakan akses ke alur pemrosesannya. Peristiwa SessionSecurityTokenReceived dan SessionSecurityTokenCreated memungkinkan Anda memodifikasi token sesi yang dibaca dari cookie atau dibuat selama pemrosesan. Biasanya, ini dilakukan untuk menambahkan, menghapus, atau mengubah klaim dalam token atau untuk menyesuaikan waktu kedaluwarsanya. Peristiwa SigningOut, SignedOut, dan SignOutError menyediakan kait ke dalam pemrosesan permintaan keluar. Untuk banyak skenario, cukup tambahkan handler untuk peristiwa ini, sering kali ke file global.asax.cs, akan cukup.
Untuk skenario yang lebih rumit, Anda dapat memperoleh dari SessionAuthenticationModule untuk mengimplementasikan SAM kustom. Untuk tujuan ini, banyak metode yang dipanggil selama OnAuthenticateRequest dan SignOut diekspos sehingga Anda dapat memberikan perilaku kustom pada tahap tertentu dari siklus hidup pemrosesan sesi.
Anda dapat menambahkan SAM ke alur ASP.NET dalam file konfigurasi dengan menambahkannya ke modul HTTP di bawah <system.webServer>
elemen untuk IIS versi 7 dan yang lebih baru atau di bawah <system.web>
elemen untuk versi sebelum IIS 7. Handler cookie yang digunakan oleh SAM dapat dikonfigurasi dengan <elemen cookieHandler> .
Konstruktor
SessionAuthenticationModule() |
Menginisialisasi instans baru kelas SessionAuthenticationModule. |
Properti
ContextSessionSecurityToken |
Mendapatkan aktif SessionSecurityToken untuk saat ini HttpContext. |
CookieHandler |
Mendapatkan handler cookie yang digunakan untuk membaca, menulis, dan menghapus cookie sesi. |
FederationConfiguration |
Mendapatkan atau mengatur FederationConfiguration objek yang berlaku untuk modul saat ini. (Diperoleh dari HttpModuleBase) |
IsReferenceMode |
Mendapatkan atau menetapkan nilai yang menentukan apakah informasi sesi (nilai klaim, dll.) harus disimpan dalam cookie sesi atau apakah konten sesi harus disimpan di sisi server, menggunakan cookie untuk menyimpan hanya referensi. |
Metode
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Mengautentikasi permintaan masuk dengan memvalidasi token sesi masuk. Setelah validasi berhasil, ini memperbarui konteks HTTP saat ini dan prinsipal utas dengan yang ditentukan SessionSecurityToken. |
ContainsSessionTokenCookie(HttpCookieCollection) |
Menentukan apakah cookie sesi berada dalam koleksi cookie yang ditentukan. |
CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
SessionSecurityToken Membuat dari parameter yang ditentukan dengan menggunakan handler token sesi yang dikonfigurasi. |
DeleteSessionTokenCookie() |
Menghapus cookie sesi dan menghapusnya dari cache. |
Dispose() |
Merilis sumber daya (kecuali memori) yang digunakan oleh instans HttpModuleBase kelas saat ini. (Diperoleh dari HttpModuleBase) |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
Init(HttpApplication) |
Menginisialisasi modul HTTP. (Diperoleh dari HttpModuleBase) |
InitializeModule(HttpApplication) |
Menginisialisasi modul dan menyiapkannya untuk menangani peristiwa dari objek aplikasi ASP.NET modul. |
InitializePropertiesFromConfiguration() |
Menginisialisasi properti modul berdasarkan definisi dalam file konfigurasi. |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
OnAuthenticateRequest(Object, EventArgs) |
AuthenticateRequest Menangani peristiwa dari alur ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
PostAuthenticateRequest Menangani peristiwa dari alur ASP.NET. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Memunculkan kejadian SessionSecurityTokenCreated. |
OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Memunculkan kejadian SessionSecurityTokenReceived. |
OnSignedOut(EventArgs) |
Memunculkan kejadian SignedOut. |
OnSigningOut(SigningOutEventArgs) |
Memunculkan kejadian SigningOut. |
OnSignOutError(ErrorEventArgs) |
Memunculkan kejadian SignOutError. |
ReadSessionTokenFromCookie(Byte[]) |
SessionSecurityToken Membaca dari cookie sesi yang ditentukan. |
SetPrincipalFromSessionToken(SessionSecurityToken) |
Mengatur prinsipal pada HttpContext dan Thread ke prinsipal yang terkandung dalam token sesi yang ditentukan. |
SignOut() |
Mengeluarkan pengguna saat ini dan memunculkan peristiwa terkait. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
TryReadSessionTokenFromCookie(SessionSecurityToken) |
Mencoba membaca SessionSecurityToken dari cookie sesi dan mengembalikan nilai yang menunjukkan apakah cookie sesi berhasil dibaca. |
ValidateSessionToken(SessionSecurityToken) |
Memvalidasi yang ditentukan SessionSecurityToken dan mengembalikan identitasnya. |
WriteSessionTokenToCookie(SessionSecurityToken) |
Menulis yang ditentukan SessionSecurityToken ke cookie sesi. |
Acara
SessionSecurityTokenCreated |
Terjadi ketika token keamanan sesi telah dibuat. |
SessionSecurityTokenReceived |
Terjadi ketika token keamanan sesi telah dibaca dari cookie. |
SignedOut |
Terjadi setelah pengguna keluar. |
SigningOut |
Terjadi sebelum menghapus sesi masuk. |
SignOutError |
Terjadi ketika ada kesalahan selama keluar. |