Pengguna dan Peran Di Situs Web Produksi (C#)
oleh Scott Mitchell
Catatan
Sejak artikel ini ditulis, penyedia Keanggotaan ASP.NET telah digantikan oleh ASP.NET Identity. Kami sangat menyarankan untuk memperbarui aplikasi untuk menggunakan platform identitas ASP.NET daripada penyedia Keanggotaan yang ditampilkan pada saat artikel ini ditulis. ASP.NET Identity memiliki sejumlah keunggulan dibandingkan sistem Keanggotaan ASP.NET, termasuk :
- Performa yang lebih baik
- Peningkatan ekstensibilitas dan kemampuan pengujian
- Dukungan untuk OAuth, OpenID Connect, dan autentikasi dua faktor
- Dukungan Identitas berbasis klaim
- Interoperabilitas yang lebih baik dengan ASP.Net Core
Alat Administrasi Situs Web ASP.NET (WSAT) menyediakan antarmuka pengguna berbasis web untuk mengonfigurasi pengaturan Keanggotaan dan Peran dan untuk membuat, mengedit, dan menghapus pengguna dan peran. Sayangnya, WSAT hanya berfungsi ketika dikunjungi dari localhost, yang berarti bahwa Anda tidak dapat mencapai Alat Administrasi situs web produksi melalui browser Anda. Kabar baiknya adalah ada solusi yang memungkinkan untuk mengelola pengguna dan peran pada produksi. Tutorial ini melihat solusi ini dan lainnya.
Pengantar
ASP.NET 2.0 memperkenalkan sejumlah layanan aplikasi, yang merupakan serangkaian layanan blok penyusun yang dapat Anda tambahkan ke aplikasi web Anda. Kami menambahkan layanan Keanggotaan dan Peran ke situs web Ulasan Buku kembali dalam tutorial Mengonfigurasi Situs Web yang Menggunakan Layanan Aplikasi. Layanan Keanggotaan memfasilitasi pembuatan dan pengelolaan akun pengguna; layanan Peran menawarkan API untuk mengategorikan pengguna ke dalam grup. Situs Ulasan Buku memiliki tiga akun pengguna - Scott, Jisun, dan Alice - dan satu peran, Admin, dengan Scott dan Jisun dalam peran Admin.
ASP. Layanan aplikasi NET tidak terkait dengan implementasi tertentu. Sebagai gantinya, Anda menginstruksikan layanan aplikasi untuk menggunakan penyedia tertentu, dan penyedia tersebut mengimplementasikan layanan menggunakan teknologi tertentu. Kami mengonfigurasi aplikasi web Ulasan Buku untuk menggunakan SqlMembershipProvider
penyedia dan SqlRoleProvider
untuk layanan Keanggotaan dan Peran. Kedua penyedia ini menyimpan akun pengguna dan informasi peran dalam database SQL Server dan merupakan penyedia yang paling umum digunakan untuk aplikasi web berbasis Internet yang dihosting di perusahaan hosting web.
Tantangan umum bagi pengembang yang menggunakan layanan Keanggotaan dan Peran adalah mengelola pengguna dan peran pada lingkungan produksi. Bagaimana Anda menghapus akun pengguna dari situs web produksi, menambahkan peran baru, atau menambahkan pengguna yang sudah ada ke peran yang sudah ada? Tutorial ini mengeksplorasi berbagai teknik untuk mengelola pengguna dan peran di situs web produksi.
Menggunakan Alat Administrasi Situs Web ASP.NET
ASP.NET menyertakan Web Site Administration Tool (WSAT) yang memudahkan untuk membuat dan mengelola akun dan peran pengguna serta menentukan aturan otorisasi berbasis pengguna dan peran. Untuk menggunakan WSAT, klik ikon Konfigurasi ASP.NET di Penjelajah Solusi, atau buka menu Situs Web atau Proyek dan pilih opsi Konfigurasi ASP.NET. Salah satu pendekatan meluncurkan browser web dan mengarahkannya ke WSAT di alamat seperti: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication
WSAT dibagi menjadi tiga bagian:
- Keamanan - mengelola pengguna, peran, dan aturan otorisasi.
- ApplicationConfiguration - kelola <pengaturan appSettings> dan SMTP dari sini. Anda juga dapat membuat aplikasi offline dan mengelola pengaturan penelusuran kesalahan dan pelacakan dari sini, serta menentukan halaman kesalahan kustom default.
- ProviderConfiguration - konfigurasikan penyedia yang digunakan oleh layanan aplikasi.
Bagian Keamanan (diperlihatkan dalam Gambar 1) menyertakan tautan untuk membuat pengguna baru, mengelola pengguna, membuat dan mengelola peran, serta membuat dan mengelola aturan akses. Dari sini Anda dapat menambahkan peran baru ke sistem, menghapus pengguna yang sudah ada, atau menambahkan atau menghapus peran dari akun pengguna tertentu.
Gambar 1: Bagian Keamanan WSAT Menyertakan Opsi untuk Mengelola Pengguna dan Peran
(Klik untuk melihat gambar ukuran penuh)
Sayangnya, WSAT hanya dapat diakses secara lokal. Anda tidak dapat mengunjungi WSAT di situs web produksi jarak jauh Anda; jika Anda mengunjungi www.yoursite.com/asp.netwebadminfiles/default.aspx
Anda mendapatkan respons 404 Tidak Ditemukan. Kode yang mendukung WSAT menggunakan Membership
kelas dan Roles
dalam .NET Framework untuk membuat, mengedit, dan menghapus pengguna dan peran. Kelas-kelas ini berkonsultasi dengan informasi konfigurasi aplikasi web untuk menentukan penyedia apa yang akan digunakan; kembali dalam tutorial Mengonfigurasi Situs Web yang Menggunakan Layanan Aplikasi, kami menyiapkan situs web Ulasan Buku untuk menggunakan SqlMembershipProvider
penyedia dan SqlRoleProvider
. Ini mencakup penambahan <membership>
dan <roleManager>
bagian ke Web.config
.
<?xml version="1.0"?>
<configuration>
...
<connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />
<system.web>
...
<membership defaultProvider="ReviewMembership">
<providers>
<clear />
<add type="System.Web.Security.SqlMembershipProvider"
name="ReviewMembership"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="ReviewRole">
<providers>
<clear />
<add type="System.Web.Security.SqlRoleProvider"
name="ReviewRole"
connectionStringName="ReviewsConnectionString"
applicationName="BookReviews" />
</providers>
</roleManager>
</system.web>
...
</configuration>
Perhatikan bahwa bagian <membership>
dan <roleManager>
mereferensikan SqlMembershipProvider
penyedia dan SqlRoleProvider
dalam atribut mereka type
, masing-masing. Penyedia ini menyimpan informasi pengguna dan peran dalam database SQL Server tertentu. Database yang digunakan oleh penyedia ini ditentukan oleh connectionStringName
atribut , ReviewsConnectionString
yang didefinisikan dalam ~/ConfigSections/databaseConnectionStrings.config
file . Ingat bahwa databaseConnectionStrings.config
file di lingkungan pengembangan berisi string koneksi ke database pengembangan sedangkan databaseConnectionStrings.config
file pada produksi berisi string koneksi ke database produksi.
Singkatnya, WSAT harus diakses secara lokal melalui lingkungan pengembangan, dan berfungsi dengan informasi pengguna dan peran dalam database yang ditentukan dalam databaseConnectionStrings.config
file. Akibatnya, jika kita mengubah informasi string koneksi dalam databaseConnectionStrings.config
file pada lingkungan pengembangan, kita dapat menggunakan WSAT secara lokal untuk mengelola pengguna dan peran di lingkungan produksi.
Untuk mengilustrasikan fungsionalitas ini, buka databaseConnectionStrings.config
file di Visual Studio pada lingkungan pengembangan dan ganti string koneksi database pengembangan dengan string koneksi database produksi. Kemudian luncurkan WSAT, buka tab Keamanan, dan tambahkan pengguna baru bernama Sam dengan kata sandi "password!" (kurang tanda kutip). Gambar 2 memperlihatkan layar WSAT saat membuat akun ini.
Gambar 2: Buat Pengguna Baru Bernama Sam Di Lingkungan Produksi
(Klik untuk melihat gambar ukuran penuh)
Karena kami mengubah string databaseConnectionStrings.config
koneksi untuk menunjuk ke server database produksi, Sam ditambahkan sebagai pengguna di lingkungan produksi. Untuk memverifikasi ini, ubah string koneksi dalam databaseConnectionStrings.config
file kembali ke database pengembangan lalu kunjungi Login.aspx
halaman di lingkungan pengembangan. Cobalah untuk masuk sebagai Sam (lihat Gambar 3).
Gambar 3: Anda Tidak Dapat Masuk Sebagai Sam di Lingkungan Pengembangan
(Klik untuk melihat gambar ukuran penuh)
Anda tidak dapat masuk sebagai Sam di lingkungan pengembangan karena informasi akun pengguna tidak ada di database lokal. Sebaliknya, ditambahkan ke database produksi. Untuk memverifikasi ini, lihat konten aspnet_Users
tabel dalam database pengembangan dan produksi. Di lingkungan pengembangan seharusnya hanya ada tiga catatan untuk pengguna Scott, Jisun, dan Alice. Namun, aspnet_Users
tabel dalam database produksi memiliki empat catatan: Scott, Jisun, Alice, dan Sam. Akibatnya, Sam dapat masuk melalui situs web dalam produksi, tetapi tidak melalui lingkungan pengembangan.
Gambar 4: Sam Dapat Masuk di Situs Web Produksi
(Klik untuk melihat gambar ukuran penuh)
Catatan
Jangan lupa untuk mengubah string koneksi dalam databaseConnectionStrings.config
file kembali ke string koneksi database pengembangan ketika Anda selesai bekerja dengan WSAT jika tidak, Anda akan bekerja dengan data produksi saat menguji situs melalui lingkungan pengembangan. Perlu diingat juga bahwa meskipun teknik yang baru saja kita bahas memungkinkan kita menggunakan WSAT untuk mengelola pengguna dan peran dari jarak jauh, perubahan pada salah satu opsi konfigurasi WSAT lainnya (aturan akses, pengaturan SMTP, pengaturan penelusuran kesalahan dan pelacakan, dan sebagainya) mengubah Web.config
file. Akibatnya, setiap perubahan yang dilakukan pada pengaturan berlaku untuk lingkungan pengembangan dan bukan untuk lingkungan produksi.
Membuat Halaman Web Manajemen Pengguna dan Peran Kustom
WSAT menyediakan sistem out of the box untuk mengelola pengguna dan peran, tetapi hanya dapat diluncurkan secara lokal dan mengharuskan membuat perubahan pada informasi string koneksi untuk mengelola pengguna dan peran pada produksi. Sebagian besar situs web yang mendukung akun pengguna juga menyertakan sejumlah halaman web administrasi pengguna dan peran yang memungkinkan administrator mengelola pengguna dan peran dari halaman dalam situs. Halaman administrasi berbasis web seperti itu membuatnya jauh lebih mudah untuk mengelola pengguna dan peran dan sangat penting untuk situs di mana mungkin ada banyak administrator atau administrator yang tidak memiliki akses ke atau latar belakang teknis untuk menggunakan Visual Studio untuk meluncurkan WSAT.
ASP.NET menyertakan sejumlah kontrol Web terkait Login bawaan yang membuat penerapan banyak halaman web administratif ini semampu seret dan letakkan. Misalnya, Anda dapat membuat halaman bagi administrator untuk membuat akun pengguna baru dengan menyeret kontrol CreateUserWizard ke halaman dan mengatur beberapa properti. Bahkan, halaman untuk membuat pengguna di WSAT yang ditampilkan di Gambar 2 menggunakan kontrol CreateUserWizard yang sama yang dapat Anda tambahkan ke halaman Anda. Selain itu, fungsionalitas layanan Keanggotaan dan Peran tersedia secara terprogram melalui Membership
kelas dan Roles
dalam .NET Framework. Dengan kelas ini Anda dapat menulis kode untuk membuat, mengedit, dan menghapus pengguna dan peran, serta untuk menambahkan atau menghapus pengguna ke peran, untuk menentukan pengguna apa dalam peran apa, dan untuk melakukan tugas terkait pengguna dan peran lainnya.
Dalam tutorial Mengonfigurasi Situs Web yang Menggunakan Layanan Aplikasi, saya menambahkan halaman ke Admin
folder bernama CreateAccount.aspx
. Halaman ini memungkinkan administrator untuk menambahkan akun pengguna baru ke situs dan menentukan apakah pengguna yang baru dibuat berada dalam peran Admin atau tidak (lihat Gambar 5).
Gambar 5: Administrator Dapat Membuat Akun Pengguna Baru
(Klik untuk melihat gambar ukuran penuh)
Untuk melihat lebih rinci tentang membangun halaman administrasi pengguna dan peran, bersama dengan instruksi langkah demi langkah tentang menggunakan Membership
kelas dan Roles
dan kontrol Web ASP.NET terkait Login, pastikan untuk membaca Tutorial Keamanan Situs Web saya. Di sana Anda akan menemukan panduan tentang cara membuat halaman web untuk membuat akun baru, membuat dan mengelola peran, menetapkan pengguna ke peran, dan tugas administratif umum lainnya.
Untuk menerapkan fungsionalitas seperti WSAT di situs web produksi, Anda selalu dapat membangun serangkaian halaman web Anda sendiri yang mengimplementasikan fitur WSAT. Untuk membantu memulai, lihat kode sumber WSAT, yang terletak di folder %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles
. Pilihan lain adalah menggunakan alternatif WSAT Dan Clem, yang ia bagikan dalam artikelnya, Rolling Your Own Web Site Administration Tool. Dan memandu pembaca melalui proses membangun alat seperti WSAT kustom, termasuk kode sumber aplikasinya untuk diunduh (di C#), dan memberikan instruksi langkah demi langkah untuk menambahkan WSAT kustomnya ke situs web yang dihosting.
Ringkasan
Alat Administrasi Situs Web (WSAT) ASP.NET dapat digunakan bersama dengan layanan aplikasi Keanggotaan dan Peran untuk mengelola informasi pengguna dan peran untuk situs web Anda. Sayangnya, WSAT hanya dapat diakses secara lokal dan tidak dapat dikunjungi dari situs web produksi Anda. Namun, dengan mengubah string koneksi di lingkungan pengembangan untuk menunjuk ke database produksi, Anda dapat menggunakan WSAT untuk mengelola pengguna dan peran di situs web produksi.
Meskipun pendekatan WSAT memberikan cara cepat dan mudah untuk mengelola pengguna dan peran, WSAT perlu meluncurkan WSAT dari Visual Studio serta perubahan sementara pada informasi string koneksi. WSAT menawarkan cara cepat untuk mengelola pengguna dan peran dalam produksi, tetapi rumit dan tidak berfungsi dengan baik untuk situs web dengan beberapa administrator atau dengan administrator yang tidak memiliki atau tidak terbiasa dengan Visual Studio dan WSAT. Untuk alasan ini, sebagian besar situs web yang mendukung akun pengguna menyertakan sekumpulan halaman web administratif. Sekumpulan halaman web semacam itu menghilangkan kebutuhan akan WSAT dan digunakan oleh berbagai pengguna administratif dari komputer mana pun.
Selamat Pemrograman!
Bacaan lebih lanjut
Untuk informasi selengkapnya tentang topik yang dibahas dalam tutorial ini, lihat sumber daya berikut:
- Memeriksa ASP. Keanggotaan, Peran, dan Profil NET
- Menggulung alat administrasi situs web Anda sendiri
- Gambaran Umum Alat Administrasi Situs Web
- Tutorial Keamanan Situs Web