1. Tổng quan về aspnetdb Database
Giới thiệu
- CSDL aspnetdb dùng để quản lý các user profiles, roles, membership và các thông tin cá nhân khác
- Áp dụng cho ASP.Net 2.0 Web Application
- Không được tạo ra khi cài đặt SQL Server 2005 Enterprise/ Express Edition
- Được tạo tự động khi sử dụng công cụ WAT và lưu trữ trong thư mục App_Data
Tạo aspnetdb Database
Tạo thủ công:
- Start => Programs => Microsoft Visual Studio 2005 => Visual Studio Tools => Visual Studio 2005 Command Prompt
- Gõ lệnh aspnetdb_regsql
2. Các nguyên tắc bảo mật của ASP.Net
Các khái niệm bảo mật
- Authentication: xác định user là ai
- Authorization: xác định quyền hạn của user
- Impersonation: là option tùy chọn, dùng Code để xử lý giới hạn truy xuất
Mô hình bảo mật ASP.Net
- IIS xác thực người dùng
- Nếu thành công, nó chuyển yêu cầu đến ASP.Net với thông tin đã được chứng thực
- Nếu ASP.Net xác thực thành công, nó cho phép gởi yêu cầu đến các trang .aspx hoặc web services,
- Khi ASP.Net Code yêu cầu tài nguyên (mở file hoặc connect đến CSDL), hệ điều hành sẽ tiến hành kiểm tra
Các chiến lượt bảo mật
- Cho phép các user nặc danh (anonymous users) nhưng sử dụng chứng thực forms để bảo mật từng phần trong Website. Nếu có user đăng nhập thì nó sẽ tiến hành xác thực user đó
- Cấm các user nặc danh và sử dụng chứng thực của IIS để bắt buộc user đăng nhập theo chứng thực Windows, Basic hoặc Digest (yêu cầu user có account trên server) => Thích hợp với mạng Intranet
Chứng thực website
- Windows Authentication:
- IIS sẽ xác thực user dựa trên Windows account
- Ưu điểm: trong suốt với người dùng, và có thể dùng code để kiểm tra thông tin tài khoản
- Khai báo:
- Cài đặt chế độ chứng thực là Windows trong tập tin Web.config
- Tắt quyền truy xuất user nặc danh (trong IIS hoặc trong tập tin Web.config)
- Cấu hình Windows account trên Web server (nếu chưa có )
Khai báo: minh hoạ khai báo chứng thực (Khai báo trong tập tin Web.config)
<configuration>
<system.web>
<authentication mode="Windows" />
</system.web>
</configuration>
Khai báo: minh hoạ cấp quyền (Khai báo trong tập tin Web.config)
<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
Hoặc khai báo trong IIS: chọn thư mục ảo, nhấn phím phải chuột => chọn Properties
- Forms Authentication:
- Xác thực user dựa trên CSDL aspnetdb
- Khai báo:
- Cài đặt chế độ chứng thực là Forms trong tập tin Web.config
- Giới hạn quyền truy xuất tập tin/thư mục của các user nặc danh
- Tạo trang Đăng nhập - Login
3. Giới thiệu công cụ WAT
Giới thiệu
- WAT – Website Administration Tool – dùng để xem và cấu hình website
- Các thao tác trên WAT sẽ làm thay đổi tập tin Web.config
- Thao tác: trên thực đơn, chọn Website => ASP.NET Configuration
Tạo User và Role
Cấp quyền truy xuất thư mục, tập tin cho user và Role
4. Tạo trang Đăng nhập
Giới thiệu và thao tác tạo
- Áp dụng cho Forms Authentication
- Dùng để chứng thực người dùng (kiểm tra userName và password) Khai báo trong tập Web.config:
<configuration>
<system.web>
<authentication mode="Windows" />
</system.web>
</configuration>
- Cấp quyền truy xuất các tập tin/thư mục: dùng WAT hoặc cập nhật trực tiếp Web.config
- Tạo trang Login.aspx tại thư mục gốc của ứng dụng
- Dùng điều khiển Login thiết kế chức năng đăng nhập
Điều khiển Login
- Kết hợp với điều khiển Validator để kiểm tra ô nhập user name và password
- Tự động kiểm tra thông tin đăng nhập
- Nếu chọn Remember me next time thì thông tin đăng nhập đựơc lưu trữ xuống cookie
- Nếu đăng nhập thành công thì mặc định chuyển đến trang Default.aspx ở thư mục gốc
- Thuộc tính: đa số dùng để thay đổi giao diện của điều khiển
Sự kiện Login
- LoggingIn:xảy ra trước khi user được xác thực
- LoggedIn : sau khi user được xác thực
- LoginError : khi đăng nhập không thành công
- Authenticate : chủ động xác thực user tùy theo code đựơc viết, điều khiển không tự động thực hiện
Tạo nút Sign Out:
- Sử dụng lớp FormsAuthentication và phương thức SignOut
Xem thông tin user:
- Sử dụng thuộc tính User.Identity của Page
- Name: tên user
- AuthenticationType: kiểu chứng thực
- IsAuthenticated: đã được chứng thực chưa
- Phương thức User.IsInRole(“Tên Role”): kiểm tra user có trong role không
5. Tạo trang Đổi mật khẩu
Giới thiệu
- Áp dụng cho Forms Authentication
- Dùng để thay đổi mật khẩu
- Sử dụng điều khiển ChangePassword
Điều khiển ChangePassword
- Các thuộc tính và sự kiện tương tự điều khiển Login
6. Profiles
Giới thiệu
- Cho phép lưu trữ dữ liệu cụ thể của người dùng đã đựơc chứng thực
- Tương tự Session, chỉ khác là dữ liệu profile không bị mất đi khi Session hết hạn
- Thuộc namespace System.Web.Profile
- Khai báo các thuộc tính cần lưu trữ trong Web.config
<configuration>
<system.web>
<profile>
<properties>
<add name="User_Name" defaultValue=""/>
<add name="Full_Name" defaultValue=""/>
</properties>
</profile>
</system.web>
</configuration>
7. Thực hiện các bước phân quyền trong ASP.NET
Bước 1: Tạo Sơ đồ trang Web có dạng sau:
Trang_Chu.aspx liên kết đền 2 trang đó là Admin.aspx và Index.aspx (chưa phân quyền thì chúng ta có thể vào cả 2 trang này mà không cần đăng nhập)
Trang LogIn.aspx thiết kế như sau:
Trang Admin.aspx thiết kế như sau:
Trang Index.aspx thiết kế như sau:
Bước 2: Click vào ASP.NET Configuration:
Nó sẽ hiện ra trang web sau:
Bước 3: Next
Bước 4:
From the internet: sử dụng ASP.Net MemberShip. From a local area network : sử dụng windows Authentication
Bước 5:
Bước 6:
Bước 7: Tạo Group phân Quyền
Bước 8:Tạo User
Nếu tạo tiếp thì nhấn nút Continue và tạo các user sau:
- nhatnam, pass: nhat_nam
- myhanh, pass: my_hanh
- mastercode, pass: master_code
Bước 9: Phân quyền thư mục/tập tin cho user:
Cho phép Role Admin truy cập vào thư mục Admin. Cấm tất cả User truy cập vào thư mục Admin
Cho phép Role Admin và KhachHang truy cập vào thư mục Pages. Cấm tất cả User truy cập vào thư mục Pages.
Bước 10: Hoàn tất
Sau khi tạo xong, ta có thể chỉnh sửa Role của các User như sau:
Thế là hoàn tất việc cấu hình. Bây giờ chạy chương trình load Trang_Chu.aspx và click vào liên kết Index sẽ hiện ra:
Đăng nhập nếu dùng tên myhanh và mastercode thì vào được trang Index.aspx
Đăng nhập nhatnam thì vào được trang Index.aspx và trang Admin.aspx
Sau khi phân quyền xong trong cây thư mục web sinh ra ASPNETDB.MDF và có web.config