Melihat ASP.NET Identity (implementasi keanggotaan baru di ASP.NET), saya menemukan antarmuka ini ketika menerapkan sendiri UserStore
:
//Microsoft.AspNet.Identity.Core.dll
namespace Microsoft.AspNet.Identity
{
public interface IUserSecurityStampStore<TUser> :
{
// Methods
Task<string> GetSecurityStampAsync(TUser user);
Task SetSecurityStampAsync(TUser user, string stamp);
}
}
IUserSecurityStampStore
diimplementasikan secara default EntityFramework.UserStore<TUser>
yang pada dasarnya mendapatkan dan mengatur TUser.SecurityStamp
properti.
Setelah beberapa penggalian lagi, tampak bahwa a SecurityStamp
adalah Guid
yang baru dibuat pada titik-titik kunci dalam UserManager
(misalnya, mengubah kata sandi).
Saya tidak bisa menguraikan lebih jauh dari ini karena saya sedang memeriksa kode ini di Reflector . Hampir semua simbol dan informasi async telah dioptimalkan.
Juga, Google tidak banyak membantu.
Pertanyaan adalah:
- Apa itu
SecurityStamp
ASP.NET Identity dan apa gunanya? - Apakah
SecurityStamp
peran apa pun saat cookie otentikasi dibuat? - Apakah ada konsekuensi keamanan atau tindakan pencegahan yang perlu diambil dengan ini? Misalnya, jangan mengirim nilai ini ke hilir ke klien?
Pembaruan (9/16/2014)
Kode sumber tersedia di sini:
asp.net
asp.net-mvc
asp.net-mvc-5
asp.net-identity
Brian Chavez
sumber
sumber
Jawaban:
Ini dimaksudkan untuk mewakili potret kredensial pengguna Anda saat ini. Jadi jika tidak ada yang berubah, cap akan tetap sama. Tetapi jika kata sandi pengguna diubah, atau login dihapus (batalkan tautan akun google / fb Anda), cap akan berubah. Ini diperlukan untuk hal-hal seperti menandatangani secara otomatis pengguna / menolak cookie lama ketika ini terjadi, yang merupakan fitur yang datang di 2.0.
Identitas belum open source, masih dalam jalur pipa.
Sunting: Diperbarui untuk 2.0.0. Jadi tujuan utama dari
SecurityStamp
ini adalah untuk memungkinkan keluar di mana-mana. Ide dasarnya adalah bahwa setiap kali sesuatu yang berhubungan dengan keamanan diubah pada pengguna, seperti kata sandi, itu ide yang baik untuk secara otomatis membatalkan setiap cookie yang masuk yang ada, jadi jika kata sandi / akun Anda sebelumnya dikompromikan, penyerang tidak lagi memiliki akses.Di 2.0.0 kami menambahkan konfigurasi berikut untuk mengaitkan
OnValidateIdentity
metode diCookieMiddleware
untuk melihatSecurityStamp
dan menolak cookie ketika telah berubah. Ini juga secara otomatis menyegarkan klaim pengguna dari database setiaprefreshInterval
jika cap tidak berubah (yang menangani hal-hal seperti mengubah peran dll)Jika aplikasi Anda ingin memicu perilaku ini secara eksplisit, itu dapat memanggil:
sumber
UseCookieAuthentication
adalah usang sekarang. Saya berhasil mengonfigurasinya menggunakanservices.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromSeconds(10));
.UseCookieAuthentication sudah tidak digunakan lagi sekarang. Saya berhasil mengonfigurasinya menggunakan
Dipindahkan dari balasan ke jawaban per permintaan .
sumber
Saya mengamati SecurityStamp yang diperlukan untuk verifikasi token.
Untuk repo: Set SecurityStamp ke null di databsae Buat token (berfungsi ok) Verifikasi token (gagal)
sumber