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 di aplikasi ASP.NET.

Meningkatkan WSFederationAuthenticationModule beberapa peristiwa, yang memungkinkan pengembang ASP.NET 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 ini WSFederationAuthenticationModule mengimplementasikan modul HTTP yang dikenal sebagai Modul Autentikasi WS-Federation (WSFAM). WSFAM diimplementasikan di luar kotak 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 tersebut 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 prinsipal utas. Anda kemudian dapat menggunakan perwakilan ini untuk membuat keputusan otorisasi, presentasi, dan logika lebih lanjut tentang pengguna yang diwakilinya dalam kode Anda.

WSFAM mengekspos 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) untuk mengirim permintaan masuk dan keluar WS-Federation.

  • 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: Dimunculkan tepat setelah token keamanan yang dikirim oleh STS dibaca dari respons.

  • SecurityTokenValidated: Dimunculkan 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 mengubah token sesi atau mengaktifkan atau menonaktifkan penulisan cookie sesi.

  • SignedIn: Dimunculkan 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: Dimunculkan jika pengecualian terjadi selama keluar. Anda dapat membatalkan keluar dan mencegah pengecualian dikembalikan ke pemanggil.

Nota

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

Ada dua cara untuk 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 secara eksplisit mengalihkan klien ke STS dengan memanggil SignIn metode dari halaman web atau kontrol kustom di aplikasi Anda. Metode ini SignIn juga menggunakan properti WSFAM untuk membangun permintaan masuk.

Salah satu metode yang kelebihan SignOut beban 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 wreply 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 dalam 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

Nama Deskripsi
WSFederationAuthenticationModule()

Dipanggil oleh konstruktor dalam kelas turunan WSFederationAuthenticationModule untuk menginisialisasi kelas.

Properti

Nama Deskripsi
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 yang akan 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 mengatur 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 wreply untuk 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 mengatur 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 wreply yang akan digunakan selama permintaan keluar WS-Federation ("wsignout1.0").

XmlDictionaryReaderQuotas

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

Metode

Nama Deskripsi
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.

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.

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 pengeluar sertifikat yang ditentukan dan yang berisi parameter wreply 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 WS-Federation keluar (wsignoutcleanup1.0) yang berisi parameter wreply.

GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer)

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

GetXmlTokenFromMessage(SignInResponseMessage)

Mengekstrak token yang dikeluarkan dari pesan respons masuk 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 Objectsaat ini.

(Diperoleh dari Object)
OnAuthenticateRequest(Object, EventArgs)

AuthenticateRequest Menangani peristiwa dari alur ASP.NET.

OnAuthorizationFailed(AuthorizationFailedEventArgs)

Menaikkan AuthorizationFailed acara.

OnEndRequest(Object, EventArgs)

EndRequest Menangani peristiwa dari alur ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

PostAuthenticateRequest Menangani peristiwa dari alur ASP.NET.

OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs)

Menaikkan RedirectingToIdentityProvider acara.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

Menaikkan SessionSecurityTokenCreated acara.

OnSignedIn(EventArgs)

Menaikkan SignedIn acara.

OnSignedOut(EventArgs)

Menaikkan SignedOut acara.

OnSignInError(ErrorEventArgs)

Menaikkan SignInError acara.

OnSigningOut(SigningOutEventArgs)

Menaikkan SigningOut acara.

OnSignOutError(ErrorEventArgs)

Menaikkan SignOutError acara.

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 prinsipal 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, Boolean)

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

SignOut(String)

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, itu, jika RequireHttps properti adalah true, bahwa URI yang ditentukan untuk Issuer dan Realm mematuhi HTTPS.

Acara

Nama Deskripsi
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 penyedia identitas.

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 terjadi kesalahan selama masuk.

SigningOut

Terjadi sebelum menghapus sesi selama keluar.

SignOutError

Muncul ketika terjadi kesalahan selama keluar.

Berlaku untuk