Bài số 6
Bo mt vi ASP.NET MVC Application
Table of Contents
1 Authentication (Xc thc ngưi dng) 2
1.1 Tạo người dùng mặc định vi ASP.NET MVC Application 2
1.2 Qun lý người dùng vi công cụ Website Administration Tool 3
1.3 Roles (Phân quyền nhóm người dùng) 4
2 Cấu hình xác thc ngưi dùng 7
2.1 Sử dụng SQL Server 2005 8
2.2 Cấu hình truy nhp database trong SQL Server 9
3 Câu ho
̉
i ôn tâ
̣
p 10
4 Ti liu tham kho 10
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
2
1 Authentication (Xc thc người dng)
C nhiều phương php xc thc người dng như Windows Authentication, Forms Authentication. phn ny ch
giơ
́
i thiê
̣
u phương pha
́
p xa
́
c thư
̣
c ngươ
̀
i du
̀
ng dư
̣
a trên Forms (dng C#). Mục đch ca hưng dn ny l ging
gii cch dng Forms Authentication đê
̉
yêu cầu ba
̉
o mâ
̣
t bằng password cho ca
́
c Views . Sư
̉
du
̣
ng Website
Administration Tool ta
̣
o ngươ
̀
i du
̀
ng va
̀
phân quyền nho
́
m ngươ
̀
i du
̀
ng, ngăn chă
̣
n như
̃
ng ngươ
̀
i du
̀
ng tra
́
i phe
́
p.
1.1 Tạo người dùng mặc định vi ASP.NET MVC Application
Mặc định khi ứng dụng được tạo sẽ có sẵn một Controllers có tên là AccountController.cs và có sẵn các Views
tương ứng ChangePassword.aspx, ChangePasswordSuccess.aspx, Login.aspx, Register.aspx (Figure 1)
Figure 1. Controllers và Views có sẵn để tạo người dùng
Views thể hiện việc register một người dùng mi như sau. (Figure 2)
Figure 2. Tạo người dùng sử dụng công cụ của ASP.NET MVC Application
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
3
1.2 Qun lý người dùng vi công cụ Website Administration Tool
Chn menu Projects ASP.NET Configuration. Xuất hiê
̣
n công cu
̣
Website Administration Tool Chn tab
Security (Figure 3)
Figure 3. Công cu
̣
Website Administration Tool
Click vo link Create User để tạo người dùng. Chẳng hạn tạo người dùng tên Lan (Figure 4)
Figure 4. Tạo người dùng với Website Administration Tool
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
4
1.3 Roles (Phân quyền nhm người dùng)
Để tạo role trưc hết cn phi enable role bằng cch click vo link Enable roles sau đ click vo link Create and
Manage roles tạo role có tên Administrators (Figure 5)
Figure 5. Tạo role cho người dùng
Tiếp theo tạo một người dùng mi kết hợp vi role đã c (Figure 6)
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
5
Figure 6. Tạo người dùng với role Administrators
Bây giờ ta c 2 người dùng mi, người dùng Lan không thuộc roles và người dùng Trang thuộc roles
Administrators.
Xây dng một controllers xem tin tức được bo mt. Yêu cu người dùng phi đăng nhp mi có quyền xem. Tùy
thuộc đối tượng người dùng nào sẽ được vào các vùng tin tức nào.
BanHang\Controllers\TinTucController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace BanHang.Controllers
{
public class TinTucController : Controller
{
public ActionResult Index()
{
return View();
}
[Authorize]
public ActionResult NguoiDung()
{
return View();
}
[Authorize(Users="Lan")]
public ActionResult NguoiDungCuThe()
{
return View();
}
[Authorize(Roles = "Administrators")]
public ActionResult NhomNguoiDung()
{
return View();
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
6
}
}
}
Tạo ra cc Views tương ứng vi cc phương thức ca TinTucController.cs: Index.aspx dành cho tất c người
dùng (kể c người dng không được xác thc), NguoiDung.aspx ch dành cho những người dng đã được xác
thc, NguoiDungCuThe.aspx dnh cho người dng đặc biệt tên là Lan, NhomNguoiDung.aspx dành cho nhóm
người dùng thuộc roles Administrators. (Figure 7)
Figure 7. Các Views tương ứng với TinTucController.cs
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
7
Thêm một tab Tin Tức bằng cách tạo một Html.ActionLink trong Views\Shared\Site.Master. (Figure 8)
Figure 8. Views Index trong Controllers\TinTucController.cs
2 Cấu hình xác thc người dùng
Thông tin về người dùng và quyền truy nhp cho nhm người dng được lưu trong cơ sở dữ liệu. Trong ví dụ này
thông tin được lưu trữ trong một SQL Express database (RAUN) tên là ASPNETDB.mdf trong folder App_Data
ca ứng dụng MVC. Database ASPNETDB.mdf được sinh t động bởi ASP.NET Framework khi sử dụng
membership. Mặc định ASPNETDB.mdf bị ẩn, vào Solution Explorer, chn Show All Files sẽ thấy
ASPNETDB.mdf nằm cùng vi Database.mdf ở dùng một thư mục App_Data (Figure 9)
Figure 9. Xem ASPNETDB.MDF bị ẩn bằng Show All Files
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
8
Thông thường các ứng dụng thc tế, hu hết các nhà phát triển đều ít khi dùng database nằm trong SQL Express
m thường sử dụng SQL Server để lưu trữ database. Có thể thay đổi để SQL Server lưu trữ thông tin người dùng
bằng hai bưc sau:
Thêm một đối tượng database Application Services trong hệ qun trị cơ sở dữ liệu (SQL Server)
Thay đổi connectionstring trong web.config trỏ đến database đã được tạo
2.1 Sử dụng SQL Server 2005
Tạo một database mi trong SQL Server 2005 (hưng dn này sử dùng phiên bn Developer). (Figure 10)
Figure 10. Tạo database BanHang trong SQL Server 2005
Thêm tất c các table và stored procedure vào database mi. Sử dụng công cụ ASP.NET SQL Server Setup
Wizard để sửa đổi thông tin trong database BanHang:
Vào Start All Programs Visual Studio 2008 Visual Studio Tools Visual Studio 2008 Command
Prompt rồi đnh vo aspnet_regsql (Figure 11)
Figure 11. Thực thi aspnet_regsql từ Visual Studio 2008 Command Prompt
Thc hiện tun t các bưc đơn gin để sửa đổi cơ sở dữ liệu BanHang lưu thông tin về người dùng và
membership. Database này có thể nằm trong mạng không nhất thiết phi nằm ở máy cục bộ. (Figure 12)
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
9
Figure 12. Cập nhật database BanHang để lưu thông tin người dùng
Sửa đổi file cấu hình web.config trong ứng dụng ASP.NET MVC Application để chuyển lưu trữ thông tin người
dùng vào database BanHang trong SQL Server 2005 thay vì sử dụng database ASPNETDB.MDF có sẵn ca
Visual Studio 2008 trong folder App_Data.
Trong file web.config sử dụng ASPNETDB.MDF mặc định để lưu thông tin người dùng
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated
Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"/>
</connectionStrings>
Sửa đổi web.config sử dụng database BanHang trong SQL Server để lưu thông tin người dùng.
<connectionStrings>
<add name="ApplicationServices" connectionString="Data Source=HUNTER-XX\SQL2005;Initial
Catalog=BanHang;User ID=sa;Password=abc@123;" providerName="System.Data.SqlClient" />
</connectionStrings>
2.2 Cấu hình truy nhp database trong SQL Server
Sử dụng Intergrated Security để kết nối database cn được thêm một tài khon người dùng ca Windows để đăng
nhp vào database. Tài khon này phụ thuộc vào sử dụng web server nào khi thc thi ứng dụng gồm ASP.NET
Development Server (mặc định ca Visual Studio) và Internet Information Services (component ca Windows),
và tài khon đăng nhp database cũng phụ thuộc vào hệ điều hành.
Nếu sử dụng ASP.NET Developmet Server cn thêm tài khon người dùng ca Windows để đăng nhp vào
database server. Nếu sử dụng IIS cn phi thêm tài khon người dùng ASPNET (trong WindowsXP) hoặc NT
AUTHORITY/NETWORK SERVICE (trong Windows Vista/Windows Server 2008/Windows 7) để đăng nhp
database server.
Microsoft Vietnam – DPE team | Bài số 6: Bảo mật với ASP.NET MVC Application
10
Thêm tài khon người dùng mi để đăng nhp database sử dụng công cụ Microsoft SQL Server Management
Studio (Figure 13)
Figure 13. Tạo tài khoản đăng nhập mới cho database
Sau khi tạo tài khon đăng nhp database, cn phi thiết lp quyền truy nhp ca tài khon. Thiết lp quyền truy
nhp sử dụng User Mapping (Figure 14).
Figure 14. Thiết lập roles cho tài khoản đăng nhập database
3 Câu ho
̉
i ôn tâ
̣
p
Hỏi: Khi chuyển từ database sử dụng SQL Express sang database sử dụng SQL Server, kết nối vi database
không thc hiện được (báo lỗi)?
Tr li: Nguyên nhân có thể do chưa thiết lp đúng quyền ca tài khon đăng nhp database. Sau khi xem lại
thiết lp đúng quyền đăng nhp, xem sử dụng web server nào, nếu dùng IIS thì cn phi thêm tài khon đăng
nhp ASPNET (đối vi Windows XP trở xuống) hoặc NT AUTHORITY/NETWORK SERVICE (đối vi
Windows Vista/Windows 2008 Server/Windows 7) cho database cn sử dụng.
4 Ti liệu tham kho