Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Bagaimana menerapkan otentikasi berbasis bentuk di ASP.NET aplikasi dengan menggunakan Visual Basic .NET

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 308157
Ringkasan
Artikel ini menunjukkan bagaimana menerapkan berbasis bentuk otentikasi dengan menggunakan database untuk menyimpan pengguna.

back to the top

Persyaratan

Daftar berikut menguraikan fitur peranti penangkap keras, peranti penangkap lunak, infrastruktur jaringan, dan Service Pack yang Anda butuhkan:
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server
  • Microsoft Internet Information Services (IIS) versi 5.0 atau yang lebih baru
back to the top

Membuat aplikasi ASP.NET menggunakan Visual Basic .NET

  1. Membuka Visual Studio .NET.
  2. Membuat aplikasi ASP.NET Web baru, dan Tentukan nama dan lokasi.
back to the top

Mengkonfigurasi pengaturan keamanan dalam berkas Web.config

Bagian ini menunjukkan bagaimana untuk menambahkan dan mengubah <authentication></authentication> dan <authorization></authorization> bagian konfigurasi untuk mengkonfigurasi aplikasi ASP.NET menggunakan otentikasi berbasis bentuk.
  1. Dalam solusi Explorer, buka berkas Web.config.
  2. Mengubah modus otentikasi ke bentuk.
  3. Masukkan <Forms>tag, dan isi yang sesuai atribut. (Untuk informasi selengkapnya tentang atribut ini, lihat MSDN dokumentasi atau dokumentasi QuickStart yang tercantum dalam </Forms>REFERENSI Bagian.) kopi karbon kode berikut, dan kemudian klik pasta sebagai HTML pada mengedit menu untuk menyisipkan kode dalam <authentication></authentication> bagian dari file:
    <authentication mode="Forms">	<forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" 	protection="All" path="/" timeout="30" /></authentication>					
  4. Menolak akses ke pengguna anonim di <authorization></authorization> bagian sebagai berikut:
    <authorization>	<deny users ="?" />	<allow users = "*" /></authorization>					
back to the top

Membuat Daftar Tabel Database contoh untuk menyimpan rincian pengguna

Bagian ini menunjukkan bagaimana untuk membuat database contoh untuk menyimpan Nama pengguna, sandi, dan peran bagi pengguna. Anda perlu kolom peran Jika Anda ingin menyimpan peran pengguna dalam database dan menerapkan berbasis peran keamanan.
  1. Dari Windows mulai menu, klik menjalankan, dan kemudian ketik Notepad untuk membuka Notepad.
  2. Sorot kode skrip SQL berikut, klik kanan-atas kode, dan kemudian klik Salin. Pada Notepad, klik Paste pada mengedit menu untuk paste kode berikut:
    if exists (select * from sysobjects where id = object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[Users]GOCREATE TABLE [dbo].[Users] (	[uname] [varchar] (15) NOT NULL ,	[Pwd] [varchar] (25) NOT NULL ,	[userRole] [varchar] (25) NOT NULL ,) ON [PRIMARY]GOALTER TABLE [dbo].[Users] WITH NOCHECK ADD 	CONSTRAINT [PK_Users] PRIMARY KEY  NONCLUSTERED 	(		[uname]	)  ON [PRIMARY] GOINSERT INTO Users values('user1','user1','Manager')INSERT INTO Users values('user2','user2','Admin')INSERT INTO Users values('user3','user3','User')GO					
  3. Simpan file sebagai Users.sql.
  4. Pada komputer Microsoft SQL Server, buka Users.sql di Query Analyzer. Dari daftar database, klik pub, dan menjalankan script. Hal ini menciptakan Daftar Tabel users sampel dan populates Daftar Tabel dalam database pub untuk digunakan dengan sampel ini aplikasi.
back to the top

Buat halaman log masuk.aspx

  1. Tambahkan formulir Web baru untuk proyek yang dinamai log masuk.aspx.
  2. Buka halaman log masuk.aspx di editor, dan beralih ke HTML Lihat.
  3. Salin kode berikut, dan menggunakan opsi Paste HTML pada Edit menu untuk memasukkan kode antara<form>Tags: </form>
    <h3>   <font face="Verdana">Logon Page</font></h3><table>   <tr>      <td>Email:</td>      <td><input id="txtUserName" type="text" runat="server"></td>      <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName"           Display="Static" ErrorMessage="*" runat="server"            ID="vUserName" /></td>   </tr>   <tr>      <td>Password:</td>      <td><input id="txtUserPass" type="password" runat="server"></td>      <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass"          Display="Static" ErrorMessage="*" runat="server"           ID="vUserPass" />      </td>   </tr>   <tr>      <td>Persistent Cookie:</td>      <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>      <td></td>   </tr></table><input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p><asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" />						
    Formulir Web ini digunakan untuk memberikan bentuk log masuk pengguna sehingga mereka dapat memberikan Nama pengguna dan password untuk log on ke aplikasi mereka.
  4. Beralih ke tampilan desain, dan Simpan halaman.
back to the top

Kode Pengangan kejadian sehingga ini memvalidasi kredensial pengguna

Bagian ini menyajikan kode yang ditempatkan di kode-belakang Halaman (Logon.aspx.vb).
  1. Buka log masuk.aspx.vb file.
  2. Impor namespaces diperlukan dalam kode-file di belakang:
    Imports System.Data.SqlClientImports System.Web.Security					
  3. Membuat fungsi ValidateUser untuk memvalidasi kredensial pengguna dengan melihat database. (Pastikan bahwa Anda mengubah koneksi string untuk menunjuk ke Anda database.)
    Private Function ValidateUser(ByVal userName As String, ByVal passWord As String) As Boolean        Dim conn As SqlConnection        Dim cmd As SqlCommand        Dim lookupPassword As String        lookupPassword = Nothing        ' Check for an invalid userName.        ' userName  must not be set to nothing and must be between one and 15 characters.        If ((userName Is Nothing)) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.")            Return False        End If        If ((userName.Length = 0) Or (userName.Length > 15)) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.")            Return False        End If        ' Check for invalid passWord.        ' passWord must not be set to nothing and must be between one and 25 characters.        If (passWord Is Nothing) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.")            Return False        End If        If ((passWord.Length = 0) Or (passWord.Length > 25)) Then            System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.")            Return False        End If        Try            ' Consult with your SQL Server administrator for an appropriate connection            ' string to use to connect to your local SQL Server.            conn = New SqlConnection("server=localhost;Integrated Security=SSPI;database=pubs")            conn.Open()            ' Create SqlCommand to select pwd field from the users table given a supplied userName.            cmd = New SqlCommand("Select pwd from users where uname=@userName", conn)            cmd.Parameters.Add("@userName", SqlDbType.VarChar, 25)            cmd.Parameters("@userName").Value = userName            ' Execute command and fetch pwd field into lookupPassword string.            lookupPassword = cmd.ExecuteScalar()            ' Cleanup command and connection objects.            cmd.Dispose()            conn.Dispose()        Catch ex As Exception            ' Add error handling here for debugging.            ' This error message should not be sent back to the caller.            System.Diagnostics.Trace.WriteLine("[ValidateUser] Exception " & ex.Message)        End Try        ' If no password found, return false.        If (lookupPassword Is Nothing) Then            ' You could write failed login attempts here to the event log for additional security.            Return False        End If        ' Compare lookupPassword and input passWord by using a case-sensitive comparison.        Return (String.Compare(lookupPassword, passWord, False) = 0)End Function					
  4. Anda dapat menggunakan salah satu dari dua metode untuk menghasilkan bentuk cookie otentikasi dan redirect pengguna ke halaman yang sesuai dalam acara cmdLogin_ServerClick . Contoh kode yang diberikan untuk kedua skenario. Menggunakan salah satu mereka sesuai dengan kebutuhan Anda.
    • Memanggil metode RedirectFromLoginPage untuk secara otomatis menghasilkan bentuk otentikasi cookie dan mengarahkan ulang pengguna ke halaman yang sesuai dalam acara cmdLogin_ServerClick :
      Private Sub cmdLogin_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) _   Handles cmdLogin.ServerClick   If ValidateUser(txtUserName.Value,txtUserPass.value) Then      FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, _      chkPersistCookie.Checked)   Else      Response.Redirect("logon.aspx", True)   End IfEnd Sub						
    • Menghasilkan otentikasi tiket, mengenkripsi itu, membuat cookie, menambahkannya ke respon, dan mengarahkan ulang pengguna. Ini memberi Anda lebih banyak kontrol di bagaimana Anda membuat cookie. Anda juga dapat menyertakan data custom sepanjang dengan FormsAuthenticationTicket dalam kasus ini.
      Private Sub cmdLogin_ServerClick(ByVal sender As Object, _   ByVal e As System.EventArgs) Handles cmdLogin.ServerClick   If Validateuser(txtUserName.Value,txtUserPass.Value) Then      Dim tkt As FormsAuthenticationTicket      Dim cookiestr As String      Dim ck As HttpCookie      tkt = New FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now(), _dateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data")      cookiestr = FormsAuthentication.Encrypt(tkt)      ck = new HttpCookie(FormsAuthentication.FormsCookieName(), cookiestr)      if (chkPersistCookie.Checked) then ck.Expires=tkt.Expiration       ck.Path = FormsAuthentication.FormsCookiePath()       Response.Cookies.Add(ck)      Dim strRedirect As String      strRedirect = Request("ReturnURL")      If strRedirect <> "" Then         Response.Redirect(strRedirect, True)      Else         strRedirect = "default.aspx"         Response.Redirect(strRedirect, True)      End If   Else      Response.Redirect("logon.aspx", True)   End IfEnd Sub						
back to the top

Buat halaman Default.aspx

Bagian ini menciptakan halaman pengujian yang pengguna diarahkan setelah mereka melakukan otentikasi. Jika pengguna telusuri paling detail Halaman ini tanpa pertama log on untuk aplikasi, mereka diarahkan ke halaman log masuk.
  1. Mengubah nama halaman WebForm1.aspx yang ada sebagai Default.aspx, dan membukanya dalam editor.
  2. Beralih ke tampilan HTML, dan menyalin kode berikut antara The<form>Tags: </form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">						
    tombol tekan ini digunakan untuk log keluar bentuk-bentuk otentikasi sesi.
  3. Beralih ke tampilan desain, dan Simpan halaman.
  4. Impor namespaces diperlukan dalam kode-file di belakang:
    Imports System.Web.Security					
  5. Terbuka di belakang kode halaman (Default.aspx.vb), dan kopi karbon kode berikut di cmdSignOut_ServerClick event handler:
    Private Sub cmdSignOut_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles cmdSignOut.ServerClick   FormsAuthentication.SignOut()   Response.Redirect("logon.aspx", True)End Sub					
  6. Simpan dan mengkompilasi proyek. Anda sekarang dapat menggunakan aplikasi.
back to the top

Pemecahan masalah

  • Anda mungkin ingin menyimpan sandi aman dalam database. Anda dapat menggunakan fungsi FormsAuthentication kelas utilitas bernama HashPasswordForStoringInConfigFile untuk mengenkripsi password sebelum Anda menyimpannya dalam database atau file konfigurasi.
  • Anda mungkin ingin menyimpan informasi koneksi SQL dalam file konfigurasi (Web.config) sehingga Anda dapat dengan mudah memodifikasi jika diperlukan.
  • Anda dapat mempertimbangkan menambahkan kode untuk mencegah hacker yang mencoba untuk menggunakan berbagai kombinasi password dari log on. Sebagai contoh, Anda dapat termasuk logika yang menerima hanya dua atau tiga percobaan log masuk. Jika pengguna tidak dapat masuk dalam jumlah tertentu upaya, Anda mungkin ingin mengatur bendera database untuk mengizinkan pengguna untuk log on sampai pengguna re-enables dirinya account dengan mengunjungi halaman yang berbeda atau dengan menelepon baris dukungan Anda. Dalam Selain itu, Anda harus menambahkan sesuai kesalahan penanganan dimanapun diperlukan.
  • Karena pengguna diidentifikasi berdasarkan otentikasi cookie, Anda mungkin ingin menggunakan Secure Sockets Layer (SSL) pada aplikasi ini jadi tidak seorang pun dapat mengambil cookie otentikasi dan berharga lain informasi yang sedang dikirim.
  • Otentikasi berbasis bentuk memerlukan bahwa klien Anda menerima atau mengaktifkan cookies pada browser mereka.
  • Timeout parameter <authentication></authentication> bagian konfigurasi kontrol interval di mana kuki pembuktian dibuat ulang. Anda dapat memilih nilai yang menyediakan lebih baik kinerja dan keamanan.
  • Perantara proxy dan cache pada Internet tertentu mungkin cache server Web tanggapan yang berisi header Set-Cookie, yang kemudian kembali ke pengguna lain. Karena otentikasi berbasis bentuk menggunakan cookie untuk melakukan otentikasi pengguna, ini dapat menyebabkan pengguna untuk sengaja (atau sengaja) meniru pengguna lain dengan menerima cookie dari proxy perantara atau cache yang awalnya ditujukan untuk mereka.
back to the top
Referensi
Untuk informasi tentang pelaksanaan sederhana berbasis bentuk otentikasi dengan menggunakan <credentials></credentials> bagian untuk menyimpan pengguna dan password, lihat artikel berikut Dalam ASP.NET QuickStart contoh: Untuk informasi tentang menerapkan otentikasi berbasis bentuk oleh menggunakan file Extensible Markup Language (XML) untuk menyimpan pengguna dan password, Lihat topik berikut dalam .NET Framework Software Development Kit (SDK) Dokumentasi:
Bentuk-bentuk otentikasi menggunakan File XML pengguna
.aspx http://msdn2.Microsoft.com/en-US/Library/1b1y85bh (vs.71)
Untuk informasi lebih lanjut tentang keamanan aplikasi ASP.NET Web, lihat artikel berikut dalam dokumentasi .NET Framework SDK: Untuk informasi lebih lanjut tentang System.Web.Security namespace, lihat artikel berikut di .NET Framework SDK Dokumentasi: Untuk informasi lebih lanjut tentang ASP.NET konfigurasi, lihat artikel .NET Framework SDK berikut: Untuk informasi tentang pedoman keamanan ASP.NET, lihat berikut MSDN white paper:
Otentikasi di ASP.NET: bimbingan keamanan .NET
http://msdn2.Microsoft.com/en-US/Library/ms978378.aspx
Untuk informasi lebih lanjut, lihat buku-buku berikut:
Esposito, Dino. Solusi Web bangunan dengan ASP.NET dan ADO.NET. Microsoft Press, 2001.

Howard, Michael dan David LeBlanc. Menulis kode aman. Microsoft Press, 2001.
back to the top
bentuk-bentuk otentikasi

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 308157 - Tinjauan Terakhir: 06/28/2013 05:30:00 - Revisi: 3.0

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbproductlink kbconfig kbhowtomaster kbsecurity kbweb kbmt KB308157 KbMtid
Tanggapan
/html>"; var Ctrl = ""; document.write("