Masuk dengan Microsoft
Masuk atau buat akun.
Halo,
Pilih akun lain.
Anda memiliki beberapa akun
Pilih akun yang ingin Anda gunakan untuk masuk.

ASP .NET dukungan suara kolom

Pemecahan masalah otentikasi formulir

Untuk mengkustomisasi kolom ini dengan kebutuhan Anda, kami akan mengundang Anda untuk mengirimkan ide-ide Anda tentang topik yang menarik minat Anda dan masalah yang Anda ingin melihat ditangani di masa depan artikel basis pengetahuan dan kolom dukungan suara. Anda dapat mengirim ide dan umpan balik menggunakan formulir Meminta untuk itu . Ada juga tautan ke formulir di bawah kolom ini.

Selamat datang di kolom ASP.NET dukungan suara! Nama saya adalah Jerry Orman. Saya telah dengan Microsoft selama 5 tahun, dan telah menghabiskan banyak waktu saya fokus pada Web yang terkait dengan teknologi seperti Microsoft FrontPage dan teknologi Microsoft SharePoint baru. Saya telah menghabiskan tahun bekerja dengan Microsoft ASP.NET sebagai teknisi dukungan. Bulan ini di kolom dukungan suara, saya akan menjelaskan cara memecahkan masalah otentikasi bentuk di Microsoft ASP.NET.

Pemecahan masalah otentikasi formulir

Ketika Anda menggunakan otentikasi formulir aplikasi ASP.NET, Anda mungkin menemukan diperlukan untuk memecahkan masalah yang terjadi saat pengguna secara acak dialihkan ke halaman login. Dalam dunia ideal, masalah ini akan terjadi dengan cara yang akan memungkinkan Anda dengan mudah melampirkan debugger dan menangkap masalah. Dalam lingkungan produksi, namun, ini adalah jarang terjadi. Untuk memecahkan masalah acak seperti ini, Anda harus log informasi yang terkait dengan masalah sehingga Anda dapat mempersempit penyebab.

Dalam kolom ini, kami akan sebentar mencakup konsep bentuk otentikasi. Kami kemudian akan melihat skenario yang menyebabkan pengguna akan diarahkan ke halaman login dan cara merekam data yang relevan untuk mengisolasi masalah. Kami juga akan membahas bagaimana menerapkan antarmuka IHttpModule untuk otentikasi formulir informasi log.

Ikhtisar otentikasi formulir

Ketika pengguna mengotentikasi ke situs Web menggunakan otentikasi formulir, server membuat cookie. Nilai cookie adalah bentuk terenkripsi otentikasi Tiket. Cookie disampaikan ke server pada setiap permintaan untuk aplikasi, dan kelas FormsAuthenticationModule mendekripsi nilai cookie dan menentukan apabila pengguna tidak valid atau tidak.

Secara default, kelas FormsAuthenticationModule ditambahkan dalam berkas Machine.config. Kelas FormsAuthenticationModule mengelola proses FormsAuthentication.

Berikut adalah entri dari berkas Machine.config:

<httpModule>     …other modules…
<add name="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule" />
…other modules…
</httpModule>

Lalu lintas HTTP umum untuk mengotentikasi dengan menggunakan otentikasi bentuk mirip dengan berikut ini:

  1. Klien mengirimkan HTTP mendapatkan untuk Default.aspx. Kuki tidak otentikasi formulir dikirim.

  2. Server mengirimkan respons 302 (pengalihan) untuk Login.aspx.

  3. Klien mengirim posting HTTP untuk Login.aspx. Ini mencakup informasi login.

  4. Server mengirimkan respons 302 (pengalihan) untuk Default.aspx. Bentuk otentikasi cookie telah disertakan.

  5. Klien mengirimkan HTTP mendapatkan untuk Default.aspx. Ini termasuk bentuk otentikasi cookie.

Untuk informasi selengkapnya tentang penerapan dan menggunakan otentikasi formulir, kunjungi situs MSDN Web berikut:

http://msdn2.microsoft.com/en-us/library/7t6b43z4.aspx

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication(vs.71).aspx

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket(vs.71).aspxUntuk informasi selengkapnya tentang berbagi borang otentikasi cookie, kunjungi situs ASP.NET Web berikut ini:

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx

Alasan bahwa pengguna mungkin akan dialihkan ke halaman login

Bentuk otentikasi cookie hilang

Skenario 1


Dalam skenario ini, pengguna yang log masuk ke situs Web. Pada beberapa titik, klien mengirimkan permintaan ke server, dan
Kelas FormsAuthenticationModule tidak menerima cookie. Anda dapat menentukan jika permintaan pengguna tidak berisi cookie dengan mengaktifkan cookie pengelogan di Microsoft Internet informasi Services (IIS). Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Buka IIS konsol manajemen Microsoft (MMC).

  2. Klik kanan situs Web, dan kemudian klik
    Properti.

  3. Klik tab situs Web , dan kemudian klik Aktifkan pengelogan.

  4. Pastikan bahwa log format W3C perpanjangan Log Format berkas.

  5. Klik Properti.

  6. Klik Advanced tab, dan kemudian klik
    Perpanjangan properti.

  7. Pada Properti diperpanjang, klik untuk memilih kotak centang Cookie(cs(Cookie)) dan Referer (cs(Referer)) kotak centang.

Setelah masalah ini terjadi, tentukan klien yang memiliki masalah dan alamat IP klien tersebut. Memfilter log IIS pada alamat IP klien tersebut, dan melihat kolom <cookie>.

Catatan Anda dapat menggunakan Log Parser untuk memilah log IIS. Untuk men-download Log Parser, kunjungi situs Web Microsoft berikut ini:

http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07Setelah Anda memiliki daftar permintaan dari pengguna khusus, Cari permintaan ke halaman login. Anda tahu mereka diarahkan kembali ke Halaman ini, dan Anda ingin melihat permintaan sebelum pengalihan terjadi. Jika Anda melihat sesuatu yang mirip dengan berikut ini, klien baik tidak mengirim cookie atau kuki dihapus pada jaringan antara klien dan server.

Ini adalah login awal.

Metode

Halaman

Respons

Cookie

DAPATKAN

/Default.aspx

302 (pengalihan)

Tidak ada cookie

DAPATKAN

/Login.aspx

200 (sukses)

Tidak ada cookie

POSTING

/Login.aspx

302 (pengalihan)

Tidak ada cookie

DAPATKAN

/Default.aspx

200 (sukses)

.ASPXAUTH

DAPATKAN

/SomePage.aspx

302 (pengalihan)

Tidak ada. ASPXAUTH Cookie

Ini adalah permintaan lainnya, diikuti oleh permintaan halaman di situs tanpa. ASPXAUTH cookie.

Metode

Halaman

Respons

Cookie

DAPATKAN

/SomePage.aspx

302 (pengalihan)

Tidak ada. ASPXAUTH Cookie

DAPATKAN

/Login.aspx

200 (sukses)

Tidak ada. ASPXAUTH Cookie

POSTING

/Login.aspx

302 (pengalihan)

Tidak ada. ASPXAUTH Cookie

DAPATKAN

/SomePage.aspx

200 (sukses)

.ASPXAUTH


Catatan Permintaan pertama dari pengguna yang bukan mungkin memiliki bentuk otentikasi cookie kecuali jika Anda membuat kuki persisten. IIS Log hanya akan menampilkan cookie yang diterima dalam permintaan. Permintaan pertama memiliki bentuk otentikasi kuki akan permintaan setelah berhasil login upaya.

Skenario 2


Cookie otentikasi formulir juga dapat hilang ketika klien cookie batas terlampaui. Di Microsoft Internet Explorer, ada batas 20 cookie. Setelah cookie 20 dibuat di klien, kuki sebelumnya akan dihapus dari klien pengumpulan. Jika. ASPXAUTH cookie dihapus, pengguna akan dialihkan ke halaman login ketika permintaan berikutnya diproses.

Anda dapat memecahkan masalah ini dua skenario dengan cara yang sama. Melihat permintaan sebelum pengalihan ke halaman login. Jika permintaan ke Halaman ini menghasilkan cookie, ini akan menjadi sesuatu untuk menyelidiki.

Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

306070 nomor dan batas ukuran kuki di Internet Explorer


Anda dapat menggunakan Fiddler untuk melihat header HTTP yang dikirim ke klien. Setelah Anda menangkap lalu lintas, klik dua kali permintaan, dan kemudian klik header untuk melihat header Set-Cookie. Jika Anda melacak berhasil login, Anda akan melihat Set-Cookie kop respons berhasil login.

Untuk mengunduh Fiddler, kunjungi situs Fiddler Web berikut ini:

http://www.fiddlertool.com/fiddler/

Skenario 3


Setelah permintaan meninggalkan klien, ada berbagai lapisan yang dapat mempengaruhi paket yang akan dikirim. Untuk menentukan apabila perangkat jaringan menghapus cookie, Anda harus merekam jejak jaringan pada klien dan server, dan kemudian Cari di badan permintaan cookie. Anda ingin melihat permintaan klien untuk memastikan bahwa kuki dikirimkan, dan periksa jejak server untuk memastikan bahwa server menerima cookie.

Permintaan klien

Ini adalah permintaan GET setelah pengguna telah dikonfirmasi. Informasi tiket otentikasi formulir disorot dengan warna biru. Ini menegaskan bahwa informasi kuki meninggalkan klien. Ketika Anda menggunakan alat tangkap jaringan, seperti Netmon, Anda melihat lalu lintas yang benar-benar pergi melalui adaptor.

47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local68 6f 73 74 2f 46 6f 72-6d 73 41 75 74 68 4c 6f   host/FormsAuthLo
67 54 65 73 74 2f 57 65-62 46 6f 72 6d 31 2e 61 gTest/WebForm1.a
73 70 78 20 48 54 54 50-2f 31 2e 31 0d 0a 41 63 spx HTTP/1.1..Ac
63 65 70 74 3a 20 69 6d-61 67 65 2f 67 69 66 2c cept: image/gif,
…Other headers of the GET request…
63 68 65 0d 0a 43 6f 6f-6b 69 65 3a 20 2e 41 53 che..Cookie: .AS
50 58 41 55 54 48 3d 33-43 45 46 39 42 39 41 30 PXAUTH=3CEF9B9A0
43 33 37 41 44 46 36 33-45 36 42 44 33 37 42 36 C37ADF63E6BD37B6
39 43 44 41 32 35 30 30-30 46 38 30 37 32 38 46 9CDA25000F80728F
35 31 43 39 35 36 36 44-31 34 43 35 34 31 34 35 51C9566D14C54145
38 31 43 39 33 45 32 41-30 31 44 44 43 44 45 46 81C93E2A01DDCDEF
32 34 41 31 37 34 32 39-34 31 30 43 30 39 37 34 24A17429410C0974
42 33 45 43 42 30 36 34-32 32 38 45 33 35 33 39 B3ECB064228E3539
39 41 38 32 32 42 33 42-39 33 36 44 46 30 38 46 9A822B3B936DF08F
42 41 42 44 33 45 31 30-32 44 30 30 32 31 30 43 BABD3E102D00210C
32 45 31 33 39 38 30 37-39 42 32 33 35 32 39 46 2E1398079B23529F
34 46 35 44 37 34 41 3b-20 50 72 6f 66 69 6c 65 4F5D74A; Profile
3d 56 69 73 69 74 6f 72-49 64 3d 62 32 34 65 62 =VisitorId=b24eb

Permintaan sisi server

Ketika Anda melihat permintaan yang mencapai server, Anda ingin memastikan bahwa server menerima informasi yang sama yang dikirimkan oleh klien. Jika server tidak menerima informasi yang sama, Anda perlu menyelidiki perangkat lain di jaringan untuk menentukan mana cookie telah dihapus.

Catatan Juga telah unsur filter ISAPI menghapus cookie. Jika Anda mengkonfirmasi bahwa Web server menerima cookie, tetapi cookie tidak tercantum dalam log IIS, periksa filter ISAPI. Anda mungkin harus menghapus filter untuk melihat apakah masalah teratasi.

Bentuk otentikasi tiket waktu habis

Penyebab umum lainnya untuk pengguna yang dialihkan adalah jika bentuk otentikasi tiket telah kedaluwarsa. Bentuk otentikasi tiket dapat waktu habis dalam dua cara. Skenario pertama terjadi jika Anda menggunakan absolut kedaluwarsa. Dengan absolut kedaluwarsa, otentikasi tiket berakhir saat waktu kedaluwarsa berakhir. Misalnya, Anda menetapkan kedaluwarsa 20 menit, dan pengguna mengunjungi situs di 2:00. Pengguna akan diarahkan ke halaman login jika pengguna mengunjungi situs setelah 14:20:00.

Jika Anda menggunakan geser kedaluwarsa, skenario ini sedikit lebih rumit. Kuki dan tiket dihasilkan diperbarui jika pengguna mengunjungi situs setelah waktu berakhirnya kedaluwarsa setengah. Misalnya, tetapkan kedaluwarsa 20 menit menggunakan geser kedaluwarsa. Pengguna mengunjungi situs di 2:00, dan pengguna akan menerima kuki yang ditetapkan untuk berakhir pada 2:20. Kedaluwarsa hanya diperbarui jika pengguna mengunjungi situs setelah 2:10. Jika pengguna mengunjungi situs di 2:09, tiket tersebut tidak diperbarui karena setengah waktu berakhirnya tidak lulus. Jika pengguna kemudian menunggu 12 menit, mengunjungi situs di 2:21, tiket tersebut akan kedaluwarsa. Pengguna diarahkan ke halaman login.

Salah satu cara untuk pendekatan jenis masalah ini untuk otentikasi formulir kuki dan tiket informasi log. Dengan cara ini, Anda dapat melihat jika cookie diterima oleh IIS dan apa nilai. Anda dapat melakukannya dengan menulis HttpModule, dan kemudian memasukkan modul tersebut ke jalur pipa permintaan. Anda tidak harus memodifikasi kode aplikasi Anda untuk mendapatkan informasi yang Anda butuhkan.

Contoh terlampir bekerja di Microsoft .NET Framework 1.1 dan .NET Framework 2.0 dan memiliki komentar sepanjang. Sampel menyertakan berkas berikut ini:catatan saya akan menyediakan tautan unduhan untuk kode yang disertakan dalam berkas FormsAuthLogger.zip.

Saya akan menunjukkan area utama berikut:


Seperti biasa, ditujukan merasa bebas untuk mengirim ide pada topik yang Anda inginkan di masa mendatang kolom atau menggunakan basis pengetahuan
Bentuk Meminta untuk itu .

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.

Komunitas membantu Anda bertanya dan menjawab pertanyaan, memberikan umpan balik, dan mendengar dari para ahli yang memiliki pengetahuan yang luas.

Apakah informasi ini berguna?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?
Dengan menekan kirim, umpan balik Anda akan digunakan untuk meningkatkan produk dan layanan Microsoft. Admin TI Anda akan dapat mengumpulkan data ini. Pernyataan Privasi.

Terima kasih atas umpan balik Anda!

×