SessionSecurityTokenHandler 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.
SecurityTokenHandler yang memproses token keamanan jenis SessionSecurityToken.
public ref class SessionSecurityTokenHandler : System::IdentityModel::Tokens::SecurityTokenHandler
public class SessionSecurityTokenHandler : System.IdentityModel.Tokens.SecurityTokenHandler
type SessionSecurityTokenHandler = class
inherit SecurityTokenHandler
Public Class SessionSecurityTokenHandler
Inherits SecurityTokenHandler
- Warisan
- Turunan
Contoh
XML berikut menunjukkan cara mengganti penangan token keamanan sesi default dalam koleksi handler token dengan instans MachineKeySessionSecurityTokenHandler kelas dalam konfigurasi.
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
Keterangan
Kelas SessionSecurityTokenHandler menserialisasikan, mendeserialisasi, dan memvalidasi token sesi. Token sesi adalah token jenis SessionSecurityToken. Kelas SessionSecurityTokenHandler menserialisasikan token ke dan dari format cookie. Secara default, kelas menserialisasikan token ke dalam elemen WS-Secure Conversation Feb2005 atau WS-Secure Conversation 1.3 <wsc:SecurityContextToken>
. Token sesi digunakan oleh WSFederationAuthenticationModule (WSFAM) dan SessionAuthenticationModule (SAM) untuk menyimpan informasi tentang sesi, ini terutama ClaimsPrincipal terkait dengan pengguna yang diautentikasi dan waktu mulai dan kedaluwarsa sesi.
Dalam skenario pasif, WSFederationAuthenticationModule panggilan ke ( SessionAuthenticationModule SAM) dari alur autentikasi untuk membuat token sesi dari ClaimsPrincipal yang mewakili pengguna yang diautentikasi. SAM menggunakan yang dikonfigurasi SessionSecurityTokenHandler untuk membuat token dan menserialisasikannya ke dalam cookie (dan untuk mendeserialisasi token dari cookie pada permintaan berikutnya). SAM menggunakan instans kelas yang dikonfigurasi CookieHandler untuk menulis cookie kembali ke Respons HTTP. Cookie ini kemudian dikembalikan ke klien dan pada permintaan berikutnya klien dapat menyajikan cookie daripada melakukan pulang pergi kembali ke Penyedia Identitas untuk mendapatkan kembali token keamanan. Untuk informasi selengkapnya tentang cara sesi beroperasi dengan WIF, lihat Manajemen Sesi WIF.
Catatan
Elemen <konfigurasi securityTokenHandlers> dapat digunakan untuk menentukan SessionSecurityTokenHandler yang memiliki tanggung jawab untuk mengamankan sesi aplikasi. Pengembang harus berhati-hati saat mengubah pengaturan konfigurasi ini, karena sistem yang salah dikonfigurasi dapat mengakibatkan penyusupan aplikasi. Misalnya, menentukan koleksi Transformasi kosong (CookieTransform) yang diturunkan SessionSecurityTokenHandler dan diteruskan ke basis, akan mengakibatkan identitas pengguna diserialisasikan ke dalam cookie yang tidak dilindungi. Ini dapat memungkinkan penyerang untuk memodifikasi identitas dan oleh karena itu mengubah hak istimewa akses.
Jika token sesi dalam mode referensi, yaitu, propertinya SessionSecurityToken.IsReferenceMode adalah true
, handler token sesi hanya menserialisasikan properti token sesi yang diperlukan untuk meregenerasi kuncinya di SessionSecurityTokenCache. Dalam kasus default, SessionSecurityTokenCacheKey kelas digunakan untuk mewakili kunci cache, dan penangan token menulis SessionSecurityToken.ContextId properti dan SessionSecurityToken.KeyGeneration token. Jika token sesi tidak dalam mode referensi, yaitu, SessionSecurityToken.IsReferenceMode properti adalah false
, maka, selain properti yang disebutkan sebelumnya, handler memanggil metode pada array byte yang diserialisasikan ApplyTransforms dari token dan menyimpan nilai yang dihasilkan dalam cookie juga. Untuk detail selengkapnya tentang bagaimana token diserialisasikan, lihat SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) metode .
Properti Transforms mendapatkan daftar transformasi yang diterapkan ke token sesi dalam ApplyTransforms metode . Semua transformasi berasal dari CookieTransform kelas . Dalam kasus DeflateCookieTransform default dan ProtectedDataCookieTransform diterapkan. ProtectedDataCookieTransform menggunakan Api Perlindungan Data (DPAPI) untuk melindungi materi cookie. DPAPI menggunakan kunci yang khusus untuk komputer tempatnya berjalan dalam algoritma perlindungannya. Untuk alasan ini, penangan token sesi default tidak dapat digunakan dalam skenario farm Web karena, dalam skenario seperti itu, token yang ditulis pada satu komputer mungkin perlu dibaca di komputer lain. Anda dapat menggunakan banyak strategi untuk menghindari masalah ini. Sebagai contoh, Anda dapat:
Ganti default SessionSecurityTokenHandler dengan MachineKeySessionSecurityTokenHandler. memungkinkan MachineKeySessionSecurityTokenHandler Anda menentukan kunci penandatanganan dan enkripsi di bawah elemen ASP.NET
<machineKey>
dalam file konfigurasi.Berikan handler untuk FederatedAuthentication.FederationConfigurationCreated peristiwa dalam file global.asax.cs dan ganti handler token sesi default dengan instans SessionSecurityTokenHandler yang memiliki daftar transformasi yang menyertakan RsaSignatureCookieTransform dan RsaEncryptionCookieTransform. Anda dapat membuat instans baru dengan memanggil salah satu konstruktor yang mengambil daftar transformasi.
Dapatkan transformasi kustom dari CookieTransform kelas dasar dan gunakan metode di atas untuk menyertakannya dalam daftar transformasi yang akan diterapkan.
Dapatkan handler token kustom dari SessionSecurityTokenHandler dan terapkan mekanisme Anda sendiri.
Untuk informasi selengkapnya tentang menggunakan sesi dalam skenario farm Web, lihat WIF dan Web Farms.
SessionSecurityTokenHandler disertakan dalam koleksi handler token default; namun, Anda dapat menggantinya dengan handler token sesi kustom dengan terlebih dahulu menentukan <elemen remove> di bawah <elemen securityTokenHandlers> untuk menghapus handler default dari koleksi lalu menambahkan handler token kustom Anda menggunakan <elemen add>. Secara default, Anda dapat menentukan masa pakai token default dengan menyertakan <elemen sessionTokenRequirement> di bawah <add>
elemen . Anda dapat merancang handler token kustom untuk mengambil elemen konfigurasi kustom di bawah <add>
elemen dengan mengesampingkan LoadCustomConfiguration metode untuk menyediakan logika untuk memprosesnya.
Konstruktor
SessionSecurityTokenHandler() |
Menginisialisasi instans SessionSecurityTokenHandler baru kelas yang menggunakan transformasi cookie default dan masa pakai token. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Menginisialisasi instans SessionSecurityTokenHandler baru kelas yang menggunakan transformasi cookie yang ditentukan. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Menginisialisasi instans SessionSecurityTokenHandler baru kelas yang menggunakan transformasi cookie dan masa pakai token yang ditentukan. |
Bidang
DefaultCookieTransforms |
Koleksi baca saja yang berisi daftar transformasi default yang akan diterapkan ke cookie, DeflateCookieTransform dan ProtectedDataCookieTransform. |
DefaultLifetime |
Konstanta yang menentukan masa pakai default untuk cookie, sepuluh jam. |
Properti
CanValidateToken |
Mendapatkan nilai yang menunjukkan apakah handler ini mendukung validasi token jenis SessionSecurityToken. |
CanWriteToken |
Mendapatkan nilai yang menunjukkan apakah handler ini dapat menulis token jenis SessionSecurityToken. |
Configuration |
Mendapatkan atau mengatur SecurityTokenHandlerConfiguration objek yang menyediakan konfigurasi untuk instans saat ini. (Diperoleh dari SecurityTokenHandler) |
ContainingCollection |
Mendapatkan koleksi handler token yang berisi instans saat ini. (Diperoleh dari SecurityTokenHandler) |
CookieElementName |
Mendapatkan nama untuk elemen cookie. |
CookieNamespace |
Mendapatkan namespace untuk elemen cookie. |
DefaultTokenLifetime |
Mendapatkan masa pakai token default. |
TokenLifetime |
Mendapatkan atau mengatur masa pakai token. |
TokenType |
Mendapatkan jenis token yang diproses handler ini. |
Transforms |
Mendapatkan transformasi yang akan diterapkan ke cookie. |
Metode
ApplyTransforms(Byte[], Boolean) |
Menerapkan transformasi yang ditentukan oleh Transforms properti untuk mengodekan atau mendekode cookie yang ditentukan. |
CanReadKeyIdentifierClause(XmlReader) |
Mengembalikan nilai yang menunjukkan apakah elemen XML yang dirujuk oleh pembaca XML yang ditentukan adalah klausa pengidentifikasi kunci yang dapat dideserialisasi oleh instans ini. (Diperoleh dari SecurityTokenHandler) |
CanReadToken(String) |
Mengembalikan nilai yang menunjukkan apakah string yang ditentukan dapat dideserialisasi sebagai token jenis yang diproses oleh instans ini. (Diperoleh dari SecurityTokenHandler) |
CanReadToken(XmlReader) |
Mengembalikan nilai yang menunjukkan apakah pembaca diposisikan pada |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Mengembalikan nilai yang menunjukkan apakah klausa pengidentifikasi kunci yang ditentukan dapat diserialisasikan oleh instans ini. (Diperoleh dari SecurityTokenHandler) |
CreateSecurityTokenReference(SecurityToken, Boolean) |
Saat ditimpa di kelas turunan, membuat referensi token keamanan untuk token yang diproses oleh kelas tersebut. Metode ini biasanya disebut oleh layanan token keamanan (STS). (Diperoleh dari SecurityTokenHandler) |
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
SessionSecurityToken Membuat berdasarkan prinsip klaim dan rentang waktu yang ditentukan di mana token valid. |
CreateToken(SecurityTokenDescriptor) |
Membuat token keamanan berdasarkan deskriptor token yang ditentukan. |
DetectReplayedToken(SecurityToken) |
Saat ditimpa di kelas turunan, melemparkan pengecualian jika token yang ditentukan terdeteksi sedang diputar ulang. (Diperoleh dari SecurityTokenHandler) |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetTokenTypeIdentifiers() |
Mendapatkan URI jenis token untuk jenis token yang dapat diproses oleh handler ini. |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
LoadCustomConfiguration(XmlNodeList) |
Memuat konfigurasi kustom dari XML. |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ReadKeyIdentifierClause(XmlReader) |
Saat ditimpa di kelas turunan, deserialisasi XML yang direferensikan oleh pembaca XML yang ditentukan ke klausa pengidentifikasi kunci yang mereferensikan token yang diproses oleh kelas turunan. (Diperoleh dari SecurityTokenHandler) |
ReadToken(Byte[], SecurityTokenResolver) |
SessionSecurityToken Membaca dari aliran byte dengan menggunakan pemecah masalah token yang ditentukan. |
ReadToken(String) |
Saat ditimpa di kelas turunan, deserialisasi string yang ditentukan ke token jenis yang diproses oleh kelas turunan. (Diperoleh dari SecurityTokenHandler) |
ReadToken(XmlReader) |
SessionSecurityToken Membaca menggunakan pembaca XML yang ditentukan. |
ReadToken(XmlReader, SecurityTokenResolver) |
SessionSecurityToken Membaca menggunakan pembaca XML dan pemecah masalah token yang ditentukan. |
SetTransforms(IEnumerable<CookieTransform>) |
Mengatur transformasi yang akan diterapkan ke cookie. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
TraceTokenValidationFailure(SecurityToken, String) |
Melacak peristiwa kegagalan selama validasi token keamanan saat pelacakan diaktifkan. (Diperoleh dari SecurityTokenHandler) |
TraceTokenValidationSuccess(SecurityToken) |
Melacak validasi peristiwa token keamanan yang berhasil saat pelacakan diaktifkan. (Diperoleh dari SecurityTokenHandler) |
ValidateSession(SessionSecurityToken) |
Menentukan apakah sesi yang terkait dengan token yang ditentukan masih valid. Validitas ditentukan dengan memeriksa ValidFrom properti dan ValidTo dari token yang ditentukan. Pengecualian dilemparkan jika sesi tidak lagi valid. |
ValidateToken(SecurityToken) |
Memvalidasi token yang ditentukan dan mengembalikan klaimnya. |
ValidateToken(SessionSecurityToken, String) |
Memvalidasi token sesi yang ditentukan dan mengembalikan klaimnya. |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Saat ditimpa di kelas turunan, menserialisasikan klausa pengidentifikasi kunci yang ditentukan ke XML. Klausa pengidentifikasi kunci harus berjenis yang didukung oleh kelas turunan. (Diperoleh dari SecurityTokenHandler) |
WriteToken(SecurityToken) |
Saat ditimpa di kelas turunan, menserialisasikan token keamanan yang ditentukan ke string. Token harus dari jenis yang diproses oleh kelas turunan. (Diperoleh dari SecurityTokenHandler) |
WriteToken(SessionSecurityToken) |
Menserialisasikan token yang ditentukan ke dalam array byte. |
WriteToken(XmlWriter, SecurityToken) |
Menserialisasikan token yang ditentukan dengan menggunakan penulis XML yang ditentukan. |