Bagikan melalui


WSFederationAuthenticationModule Kelas

Definisi

WSFederationAuthenticationModule adalah modul HTTP yang digunakan untuk mengamankan aplikasi ASP.NET dengan memberlakukan pengaturan autentikasi federasi pada permintaan masuk. WSFederationAuthenticationModule adalah modul utama yang ditawarkan WIF di luar kotak untuk menangani akses identitas berbasis klaim dalam aplikasi ASP.NET.

meningkatkan WSFederationAuthenticationModule beberapa peristiwa, yang memungkinkan ASP.NET pengembang untuk mengubah perilaku default dan mengontrol detail bagaimana pemrosesan autentikasi dan klaim berlangsung. Fungsionalitas WSFederationAuthenticationModule dibagi menjadi metode khusus tugas.

public ref class WSFederationAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class WSFederationAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type WSFederationAuthenticationModule = class
    inherit HttpModuleBase
Public Class WSFederationAuthenticationModule
Inherits HttpModuleBase
Warisan
WSFederationAuthenticationModule

Contoh


void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup

    //SUBSCRIBE TO WSFAM EVENTS
    FederatedAuthentication.WSFederationAuthenticationModule.AuthorizationFailed += new EventHandler<AuthorizationFailedEventArgs>(WSFederationAuthenticationModule_AuthorizationFailed);
    FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += new EventHandler<RedirectingToIdentityProviderEventArgs>(WSFederationAuthenticationModule_RedirectingToIdentityProvider);
    FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenReceived += new EventHandler<SecurityTokenReceivedEventArgs>(WSFederationAuthenticationModule_SecurityTokenReceived);
    FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenValidated += new EventHandler<SecurityTokenValidatedEventArgs>(WSFederationAuthenticationModule_SecurityTokenValidated);
    FederatedAuthentication.WSFederationAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(WSFederationAuthenticationModule_SessionSecurityTokenCreated);
    FederatedAuthentication.WSFederationAuthenticationModule.SignedIn += new EventHandler(WSFederationAuthenticationModule_SignedIn);
}

void WSFederationAuthenticationModule_SignedIn(object sender, EventArgs e)
{
    //Anything that's needed right after succesful session and before hitting the application code goes here
    System.Diagnostics.Trace.WriteLine("Handling SignIn event");
}

void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
    //Manipulate session token here, for example, changing its expiration value
    System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
    System.Diagnostics.Trace.WriteLine("Key valid from: " + e.SessionToken.KeyEffectiveTime);
    System.Diagnostics.Trace.WriteLine("Key expires on: " + e.SessionToken.KeyExpirationTime);
}

void WSFederationAuthenticationModule_SecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs e)
{
    //All vlidation SecurityTokenHandler checks are successful
    System.Diagnostics.Trace.WriteLine("Handling SecurityTokenValidated event");
}

void WSFederationAuthenticationModule_SecurityTokenReceived(object sender, SecurityTokenReceivedEventArgs e)
{
    //Augment token validation with your cusotm validation checks without invalidating the token.
    System.Diagnostics.Trace.WriteLine("Handling SecurityTokenReceived event");
}

void WSFederationAuthenticationModule_AuthorizationFailed(object sender, AuthorizationFailedEventArgs e)
{
    //Use this event to report more details regarding the ahorization failure
    System.Diagnostics.Trace.WriteLine("Handling AuthorizationFailed event");
}

void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
{
    //Use this event to programmatically modify the sign-in message to the STS.
    System.Diagnostics.Trace.WriteLine("Handling RedirectingToIdentityProvider event");
}

Keterangan

Kelas mengimplementasikan WSFederationAuthenticationModule modul HTTP yang dikenal sebagai Modul Autentikasi WS-Federation (WSFAM). WSFAM diimplementasikan secara langsung oleh Windows Identity Foundation (WIF). WSFAM ditambahkan ke alur ASP.NET dengan membuat entri dalam file web.config. Ini berasal dari HttpModuleBase, yang mengimplementasikan IHttpModule. Ini mendaftar dengan runtime ASP.NET untuk EndRequest mendengarkan peristiwa dan AuthenticateRequest . Mendengarkan peristiwa tersebut EndRequest , memungkinkan klien pengalihan WSFAM ke layanan token keamanan (STS) untuk mendapatkan token keamanan saat otorisasi gagal pada sumber daya yang diminta. Mendengarkan AuthenticateRequest peristiwa memungkinkan WSFAM memantau permintaan HTTP untuk respons dari STS yang berisi token yang diminta. Ketika token seperti itu ada dan valid, token tersebut membuat instans ClaimsPrincipal untuk pengguna yang diautentikasi menggunakan klaim yang ada dalam token.

Saat menggunakan WSFAM, manajemen sesi disediakan oleh modul autentikasi sesi (SAM), yang merupakan instans SessionAuthenticationModule kelas, atau kelas yang berasal darinya. SAM juga ditambahkan ke alur ASP.NET dalam file konfigurasi. SAM memantau permintaan untuk cookie autentikasi (sesi). Ketika cookie ini ada dan valid, modul mengekstrak ClaimsPrincipal untuk pengguna yang diautentikasi dari SessionSecurityToken dan mengatur properti dan properti utama Thread.CurrentPrincipal utasHttpContext.User.

WSFAM menyediakan:

  • Kemampuan aplikasi ASP.NET untuk mengalihdayakan autentikasi ke layanan token keamanan (STS) dengan menggunakan protokol WS-Federation. Identitas dapat digabungkan di satu atau beberapa ranah identitas dan melibatkan beberapa STS.

  • Identitas berbasis klaim untuk aplikasi ASP.NET. Selama autentikasi, WSFAM membangun prinsipal dari klaim dalam token keamanan yang dikirim oleh STS dan menetapkan prinsip klaim ini sebagai perwakilan utas. Anda kemudian dapat menggunakan perwakilan ini untuk membuat keputusan otorisasi, presentasi, dan logika lebih lanjut tentang pengguna yang diwakilinya dalam kode Anda.

WSFAM memaparkan beberapa properti yang menyediakan parameter pesan default untuk digunakan pada permintaan masuk dan keluar WS-Federation. Properti ini biasanya diinisialisasi dari <elemen wsFederation> dalam file konfigurasi. Yang paling penting dari properti ini adalah:

  • Properti Issuer , yang menentukan alamat layanan token keamanan (STS) yang akan dikirim WS-Federation permintaan masuk dan keluar.

  • Properti Realm , yang menentukan parameter wtrealm untuk digunakan dalam permintaan masuk WS-Federation. Parameter wtrealm mengidentifikasi ranah keamanan aplikasi pihak yang mengandalkan (RP) ke STS.

Parameter pesan masuk juga dapat diubah berdasarkan per permintaan dengan menyediakan delegasi penanganan aktivitas untuk peristiwa tersebut RedirectingToIdentityProvider .

Dua properti mengontrol perilaku modul. Kedua properti ini juga biasanya diinisialisasi dari <wsFederation> elemen dalam konfigurasi.

  • Properti PassiveRedirectEnabled menentukan apakah modul harus melakukan pengalihan pasif ke STS untuk autentikasi.

  • Properti PersistentCookiesOnPassiveRedirects menentukan apakah sesi harus persisten. Jika properti ini diatur true, SAM digunakan untuk menulis cookie sesi ke klien. Pada permintaan berikutnya dari klien, SAM menyediakan autentikasi dengan menggunakan token yang bertahan dalam cookie sesi.

WSFAM memunculkan beberapa peristiwa selama masuk dan keluar, yang memungkinkan pengembang ASP.NET mengubah perilaku default modul dan mengontrol detail bagaimana pemrosesan autentikasi dan klaim berlangsung.

Peristiwa berikut dinaikkan sebelum permintaan masuk WS-Federation dikirim ke STS:

  • AuthorizationFailed: Dinaikkan saat pengalihan pasif diaktifkan dan otorisasi gagal pada sumber daya yang diminta.

  • RedirectingToIdentityProvider: Dinaikkan tepat sebelum WSFAM mengirimkan permintaan masuk WS-Federation ke STS. Anda dapat menggunakan peristiwa ini untuk mengubah parameter dalam permintaan masuk.

Peristiwa berikut dimunculkan ketika respons masuk (token keamanan yang dikeluarkan) diterima dari STS:

  • SecurityTokenReceived: Dinaikkan tepat setelah token keamanan yang dikirim oleh STS dibaca dari respons.

  • SecurityTokenValidated: Dinaikkan tepat setelah token divalidasi. Anda dapat menggunakan peristiwa ini untuk memfilter, mengubah, atau menambahkan klaim ke prinsip klaim (ClaimsPrincipal) yang dibuat dari token keamanan.

  • SessionSecurityTokenCreated: Dinaikkan tepat sebelum token sesi (SessionSecurityToken) yang dibuat dari prinsip klaim digunakan untuk mengatur perwakilan utas dan pengguna saat ini dan ditulis ke cookie sesi. Memberi Anda kesempatan untuk memodifikasi token sesi atau mengaktifkan atau menonaktifkan penulisan cookie sesi.

  • SignedIn: Dinaikkan di akhir autentikasi tepat setelah perwakilan utas dan pengguna saat ini telah ditetapkan.

  • SignInError: Dinaikkan jika pengecualian terjadi selama masuk. Anda dapat membatalkan permintaan dan mencegah pengecualian dikembalikan ke pemanggil.

Saat keluar dari sesi atau saat memproses permintaan pembersihan keluar WS-Federation (wsignoutcleanup1.0), peristiwa berikut dinaikkan:

  • SigningOut: Dinaikkan tepat sebelum sesi dihapus untuk memungkinkan Anda melakukan pembersihan apa pun yang mungkin bergantung pada sesi atau membatalkan keluar.

  • SignedOut: Dimunculkan tepat setelah sesi dihapus.

  • SignOutError: Dinaikkan jika pengecualian terjadi selama keluar. Anda dapat membatalkan keluar dan mencegah pengecualian dikembalikan ke pemanggil.

Catatan

Peristiwa keluar tidak dinaikkan saat keluar di STS dengan memanggil FederatedSignOut metode .

Ada dua cara masuk ke STS menggunakan WSFAM. Yang pertama adalah dengan mengaktifkan pengalihan pasif melalui PassiveRedirectEnabled properti . Dalam hal ini, ketika otorisasi gagal pada sumber daya yang diminta, daripada mengembalikan 401:Access Denied respons ke klien, WSFAM membangun pesan permintaan masuk WS-Federation dari propertinya dan mengalihkan klien ke STS untuk mengambil token keamanan. Cara kedua adalah mengalihkan klien secara eksplisit ke STS dengan memanggil SignIn metode dari halaman web atau kontrol kustom di aplikasi Anda. Metode ini SignIn juga menggunakan properti WSFAM untuk membuat permintaan masuk.

Salah satu metode yang kelebihan beban SignOut dapat digunakan untuk keluar dari sesi. Ini menghapus cookie sesi pada klien. Ini tidak mengirim pesan keluar WS-Federation ("wsignout1.0") ke STS. Untuk keluar di STS, Anda harus menggunakan metode .FederatedSignOut

WSFAM menangani WS-Federation permintaan pembersihan keluar ("wsignoutcleanup1.0"), dengan menghapus sesinya dengan klien. Jika parameter balasan dalam pesan pembersihan keluar tidak diatur, WSFAM mengembalikan gambar tanda centang hijau ke STS yang mengirim pesan. Fitur ini dapat digunakan oleh STS sebagai pengakuan bahwa RP telah menyelesaikan proses keluarnya.

WSFAM mengekspos fungsionalitasnya -- misalnya, alur pemrosesan permintaannya -- melalui beberapa metode khusus tugas. Anda dapat mengambil alih metode ini di kelas turunan untuk mengubah perilaku WSFAM.

Untuk digunakan, modul harus ditambahkan ke alur seperti dalam XML berikut:

<configuration>
  <system.webServer>
    <modules>
      <add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </modules>
  </system.webServer>
</configuration>

Setelah dikonfigurasi WSFederationAuthenticationModule , meningkatkan peristiwa pada berbagai tahap pemrosesan permintaan HTTP. ASP.NET pengembang dapat menangani peristiwa ini dalam file global.asax.

Konstruktor

WSFederationAuthenticationModule()

Dipanggil oleh konstruktor di kelas turunan untuk menginisialisasi WSFederationAuthenticationModule kelas.

Properti

AuthenticationType

Mendapatkan atau menetapkan nilai parameter wauth untuk digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

FederationConfiguration

Mendapatkan atau mengatur FederationConfiguration objek yang berlaku untuk modul saat ini.

(Diperoleh dari HttpModuleBase)
Freshness

Mendapatkan atau menetapkan nilai parameter wfresh untuk digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

HomeRealm

Mendapatkan atau menetapkan nilai parameter whr untuk digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

Issuer

Mendapatkan atau menetapkan URI yang mengidentifikasi penerbit token keamanan yang dimaksudkan.

PassiveRedirectEnabled

Mendapatkan atau menetapkan nilai yang menentukan apakah modul diaktifkan untuk memulai pengalihan protokol WS-Federation.

PersistentCookiesOnPassiveRedirects

Mendapatkan atau menetapkan nilai yang menentukan apakah cookie sesi persisten dikeluarkan pada autentikasi yang berhasil.

Policy

Mendapatkan atau menetapkan nilai parameter wp yang akan digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

Realm

Mendapatkan atau menetapkan nilai parameter wtrealm yang akan digunakan untuk permintaan masuk WS-Federation ("wsignin1.0").

Reply

Mendapatkan atau menetapkan nilai parameter balasan yang akan digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

Request

Mendapatkan atau menetapkan nilai parameter wreq untuk digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

RequestPtr

Mendapatkan atau menetapkan nilai parameter wreqptr untuk digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

RequireHttps

Mendapatkan atau menetapkan nilai yang menentukan apakah komunikasi dengan layanan token keamanan (STS) harus menggunakan protokol HTTPS.

Resource

Mendapatkan atau menetapkan nilai parameter wres untuk digunakan dalam permintaan masuk WS-Federation ("wsignin1.0").

SignInContext

Mendapatkan atau menetapkan nilai konteks khusus aplikasi yang akan disertakan dalam parameter wctx dalam permintaan masuk WS-Federation.

SignInQueryString

Mendapatkan atau mengatur string kueri yang berisi parameter tambahan yang akan dikirim dalam permintaan masuk WS-Federation ("wsignin1.0").

SignOutQueryString

Mendapatkan atau mengatur string kueri yang berisi parameter tambahan yang akan dikirim dalam permintaan keluar WS-Federation ("wsignout1.0").

SignOutReply

Mendapatkan atau menetapkan nilai parameter balasan yang akan digunakan selama permintaan keluar WS-Federation ("wsignout1.0").

XmlDictionaryReaderQuotas

Mendapatkan atau mengatur objek yang XmlDictionaryReaderQuotas akan digunakan saat mendeserialisasi WS-Federation pesan respons masuk untuk mendapatkan token yang dikeluarkan oleh layanan token keamanan (STS).

Metode

CanReadSignInResponse(HttpRequestBase)

Mengembalikan nilai yang menunjukkan apakah permintaan HTTP yang ditentukan adalah pesan respons masuk WS-Federation. Jika pesan adalah pesan pembersihan keluar WS-Federation ("wsignoutcleanup1.0"), metode ini memproses permintaan.

CanReadSignInResponse(HttpRequestBase, Boolean)

Mengembalikan nilai yang menunjukkan apakah permintaan HTTP yang ditentukan adalah pesan respons masuk WS-Federation. Jika pesan adalah pesan pembersihan keluar WS-Federation ("wsignoutcleanup1.0"), metode ini memproses permintaan.

CreateSignInRequest(String, String, Boolean)

Membuat pesan permintaan masuk WS-Federation dengan menggunakan parameter WS-Federation yang dikonfigurasi pada modul.

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)
FederatedSignOut(Uri, Uri)

Keluar di layanan token keamanan (STS) yang ditentukan dengan menggunakan protokol WS-Federation.

GetFederationPassiveSignOutUrl(String, String, String)

Mengembalikan URL yang mewakili permintaan keluar WS-Federation yang ditujukan kepada penerbit yang ditentukan dan yang berisi parameter balasan yang ditentukan dan parameter tambahan yang ditentukan.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetReferencedResult(String)

Mendapatkan hasil penerbitan (biasanya token yang dikeluarkan) dari URL yang ditentukan. Menyelesaikan URL yang ditentukan dalam parameter wresultptr dalam pesan respons masuk.

GetReturnUrlFromResponse(HttpRequestBase)

Mengekstrak URL halaman yang awalnya diminta dari respons masuk.

GetSecurityToken(HttpRequestBase)

Membaca token keamanan dari permintaan HTTP yang ditentukan.

GetSecurityToken(SignInResponseMessage)

Membaca token keamanan dari pesan respons masuk Federasi WS yang ditentukan.

GetSessionTokenContext()

Mendapatkan string yang harus dipertahankan dengan cookie sesi di Context properti .

GetSignInResponseMessage(HttpRequestBase)

SignInResponseMessage Membaca objek dari formulir POST yang diwakili oleh permintaan HTTP yang ditentukan.

GetSignOutRedirectUrl(SignOutCleanupRequestMessage)

Menentukan URL yang akan dialihkan saat memproses permintaan pembersihan keluar WS-Federation (wsignoutcleanup1.0) yang berisi parameter balasan.

GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
GetXmlTokenFromMessage(SignInResponseMessage)

Mengekstrak token yang dikeluarkan dari pesan respons masuk WS-Federation yang ditentukan.

GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer)

Mengekstrak token yang dikeluarkan dari pesan respons masuk WS-Federation yang ditentukan dengan menggunakan serializer WS-Federation yang ditentukan.

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 konfigurasi yang ditentukan oleh FederationConfiguration properti modul.

IsSignInResponse(HttpRequestBase)

Mendapatkan nilai yang menunjukkan apakah permintaan yang ditentukan adalah pesan respons masuk WS-Federation.

MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
OnAuthenticateRequest(Object, EventArgs)

AuthenticateRequest Menangani peristiwa dari alur ASP.NET.

OnAuthorizationFailed(AuthorizationFailedEventArgs)

Memunculkan kejadian AuthorizationFailed.

OnEndRequest(Object, EventArgs)

EndRequest Menangani peristiwa dari alur ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

PostAuthenticateRequest Menangani peristiwa dari alur ASP.NET.

OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs)

Memunculkan kejadian RedirectingToIdentityProvider.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

Memunculkan kejadian SessionSecurityTokenCreated.

OnSignedIn(EventArgs)

Memunculkan kejadian SignedIn.

OnSignedOut(EventArgs)

Memunculkan kejadian SignedOut.

OnSignInError(ErrorEventArgs)

Memunculkan kejadian SignInError.

OnSigningOut(SigningOutEventArgs)

Memunculkan kejadian SigningOut.

OnSignOutError(ErrorEventArgs)

Memunculkan kejadian SignOutError.

RedirectToIdentityProvider(String, String, Boolean)

Mengalihkan pengguna ke layanan token keamanan (STS) yang ditentukan oleh Issuer properti untuk mendapatkan token keamanan menggunakan protokol WS-Federation.

SetPrincipalAndWriteSessionToken(SessionSecurityToken, Boolean)

Mengatur perwakilan utas dan secara opsional menulis cookie sesi.

SignIn(String)

Melakukan masuk ke layanan token keamanan (STS) melalui protokol WS-Federation.

SignOut()

Keluar dari sesi saat ini dan meminta pengalihan kembali ke URL yang ditentukan dalam permintaan HTTP saat ini.

SignOut(Boolean)

Keluar dari sesi saat ini dan menaikkan peristiwa yang sesuai.

SignOut(String)

Keluar dari sesi saat ini dan meminta pengalihan kembali ke URL yang ditentukan.

SignOut(String, Boolean)

Keluar dari sesi saat ini dan meminta pengalihan kembali ke URL yang ditentukan.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
VerifyProperties()

Memverifikasi bahwa Issuer properti dan Realm tidak kosong, dan, bahwa, jika RequireHttps properti adalah true, bahwa URI yang ditentukan untuk Issuer dan Realm mematuhi HTTPS.

Acara

AuthorizationFailed

Terjadi ketika modul menentukan apakah modul harus mengalihkan pengguna ke pengeluar sertifikat yang dikonfigurasi untuk mengautentikasi.

RedirectingToIdentityProvider

Terjadi ketika modul akan mengalihkan pengguna ke IdP.

SecurityTokenReceived

Terjadi ketika token keamanan telah diterima dari layanan token keamanan (STS).

SecurityTokenValidated

Terjadi setelah token keamanan yang diterima dari layanan token keamanan (STS) telah divalidasi tetapi sebelum token keamanan sesi dibuat.

SessionSecurityTokenCreated

Terjadi ketika token keamanan sesi telah dibuat dari token keamanan yang diterima dari layanan token keamanan (STS).

SignedIn

Terjadi setelah pengguna masuk.

SignedOut

Terjadi tepat setelah menghapus sesi selama keluar.

SignInError

Muncul ketika kesalahan selama masuk terjadi.

SigningOut

Terjadi sebelum menghapus sesi selama keluar.

SignOutError

Muncul ketika terjadi kesalahan selama keluar.

Berlaku untuk