88 SSSS SSSS ửửửử ửửửử dddd dddd ụụụụ ụụụụ nnnn nnnn gggg gggg IIII IIII IIII IIII SSSS SSSS aaaa aaaa uuuu uuuu tttt tttt hhhh hhhh eeee eeee nnnn nnnn tttt tttt iiii iiii cccc cccc aaaa aaaa tttt tttt iiii iiii oooo oooo nnnn nnnn

Một phần của tài liệu Các giải pháp lập trình C Sharp_4 pdf (Trang 48 - 52)

Bn cn ngăn người dùng truy xut các trang nào đó tr khi họđã được xác thc da vào Windows user account (tài khon người dùng Windows) trên server.

S dng IIS Windows authentication. Chn phương pháp xác thcmà bn thích, và t chi truy xut nc danh đến thư mc o bng IIS Manager. Bn có th ly thông tin v người dùng đã được xác thc t thuc tính Page.User hoc lp

Chương 7: ASP.NET và Web Form

IIS ASP.NET sử dụng mô hình bảo mật được sắp lớp (layered security model). Khi người

dùng yêu cầu một trang ASP.NET trên HTTP, các bước dưới đây sẽ diễn ra:

1. IIS thực hiện việc xác thực người dùng. Nếu Anonymous accessđược kích hoạt, IIS sẽ

tự động đăng nhập người dùng với tài khoản nặc danh (IUSR_[ServerName]). Nếu không, nó sẽ yêu cầu thông tin xác thực để đăng nhập người dùng với một tài khoản

Windows khác.

2. Nếu IIS xác thực người dùng thành công, nó sẽ chuyển yêu cầu đến ASP.NET cùng với thông tin về người dùng đã được xác thực. Theo đó, ASP.NET có thể sử dụng các dịch vụ bảo mật của nó dựa vào các thiết lập trong file Web.config (ví dụ, không cho người dùng hoặc nhóm cụ thể truy xuất đến các trang hoặc thư mục nào đó). Ngoài ra, mã của bạn có thể hạn chế các hành động bằng cách kiểm tra thông tin về người dùng.

3. Nếu mã ASP.NET truy xuất bất kỳ tài nguyên hệ thống nào (ví dụ, mở một file hoặc kết nối đến một cơ sở dữ liệu), hệđiều hành Windows sẽ thực hiện những kiểm tra bảo mật của nó. Thông thường, mã ứng dụng ASP.NET không thực sự chạy dưới tài khoản của người dùng đã được xác thực. Như thế, những kiểm tra bảo mật này được thực hiện dựa trên tài khoản tiến trình ASPNET (được cấu hình bằng file machine.config).

Để sử dụng IIS authentication, bước đầu tiên là vô hiệu Anonymous access cho thư mục ảo.

Bạn cần khởi động IIS Manager (vào Start | Control Panel | Administrative Tools | Internet

Information Services). Kế tiếp, nhắp phải vào một thư mục ảo hoặc một thư mục con bên trong thư mục ảo, và chọn Properties. Chọn thẻDirectory Security (xem hình 7.5).

Hình 7.5 Directory Security

Kế tiếp, nhắp nút Edit. Cửa sổ như hình 7.6 sẽ xuất hiện. Trong nửa dưới của cửa sổ, bạn có thể kích hoạt một trong các phương pháp xác thực. Tuy nhiên, không phương pháp nào được sử dụng trừ khi bạn xóa dấu chọn Anonymous access.

Chương 7: ASP.NET và Web Form

Hình 7.6 Directory authentication

Bạn có thể kích hoạt nhiều phương pháp xác thực, trong trường hợp này client sẽ sử dụng phương pháp được hỗ trợ mạnh nhất. Nếu Anonymous accessđược kích hoạt thì nó luôn được sử dụng. Các phương pháp xác thực khác nhau được mô tả trong bảng 7.2.

Bng 7.2 Các kiểu xác thực

Chế độ Mô tả

Anonymous Client không cần cung cấp bất kỳ thông tin nào. Người dùng được đăng

nhập bằng tài khoản nặc danh có sẵn (IUSR_[ServerName]).

Basic

Basic authentication là một phần của chuẩn HTTP 1.0, và nó được hầu hết

các trình duyệt và web-server hỗ trợ. Khi sử dụng Basic authentication, trình duyệt yêu cầu người dùng nhập username và password. Thông tin này

được chuyển cho IIS, và nó được so trùng với Windows user account cục

bộ. Basic authentication nên luôn được phối hợp với SSL vì nó không bảo

mật thông tin đăng nhập trước khi chuyển giao.

Digest

Digest authentication gửi một digest (tức mã băm mật mã) trên mạng. Do

đó, nó an toàn hơn Basic authentication vì thông tin đăng nhập nếu bị chặn cũng không thể dùng lại được. Bất lợi chủ yếu là Digest authentication chỉ được hỗ trợ trên Internet Explorer 5.0 trở lên. Cũng vậy, web-server của bạn cần sử dụng Active Directory hoặc có thể truy xuất đến một Active

Directory server.

Integrated

Khi sử dụng Integrated authentication thì Internet Explorer gửi logon token cho người dùng hiện hành một cách tựđộng, miễn là nó ở trên một miền đáng tin cậy. Integrated authentication chỉ được hỗ trợ trên Internet

Explorer 2.0 trở lên và không thể làm việc trên các proxy-server.

Một khi đã kích hoạt các thiết lập bảo mật cho thư mục ảo thích hợp, bạn cũng nên bảo đảm file Web.config được thiết lập là sử dụng Windows authentication. Trong một dự án Visual Studio .NET, đây là thiết lập mặc định.

Chương 7: ASP.NET và Web Form <configuration> <system.web> <!-- Bỏ qua các thiết lập khác. --> <authentication mode="Windows" /> </system.web> </configuration>

Vào lúc này, thư mục ảo của bạn sẽ yêu cầu xác thực người dùng và ứng dụng Web sẽ có thể

lấy thông tin về người dùng. Ngoài ra, bạn có thể thêm các quy tắc phân quyền (authorization rule) để ngăn người dùng hoặc nhóm nào đó truy xuất các trang web hoặc thư mục con. Bạn thực hiện điều này bằng cách thêm thẻ<allow> và <deny> vào phần <authorization> của file

Web.config. Ví dụ, bạn có thể tạo một thư mục con với nội dung file Web.config như sau:

<configuration> <system.web> <authorization> <deny roles="Guest,Associate" /> <allow users="nnbphuong81" /> <deny users="*" /> </authorization> </system.web> </configuration>

ASP.NET xét qua các quy tắc phân quyền theo thứ tự chúng xuất hiện và dừng khi tìm thấy

một trùng khớp. Trong ví dụ này, người dùng trong các nhóm Guest hoặc Associate sẽ tự động bị từ chối. Người dùng nnbphuong81 sẽđược phép (trừ khi anh ta là thành viên của một trong hai nhóm bị cấm ở trên). Tất cả các người dùng khác sẽ bị từ chối. Trong trường hợp này, đây là các nhóm và tài khoản người dùng cục bộ. Nếu muốn nói đến một tài khoản miền, bạn hãy sử dụng cú pháp [DomainName]\[UserName].

Để ý trong ví dụ này, file Web.config không chứa phần <authentication>. Đó là vì phần này

đã được cấu hình trong file Web.config thuộc thư mục ứng dụng Web. Các thư mục con có thể

thiết lập các quy tắc phân quyền của chúng, nhưng chúng không thể thay đổi chếđộ xác thực. Một tùy chọn khác không cho truy xuất đến các trang cụ thể là sử dụng đặc tính <location>: <configuration> <system.web> <!-- Bỏ qua các thiết lập khác. --> </system.web> <location path="SecurePage.aspx"> <system.web> <authorization> <deny roles="Guest" /> </authorization> </system.web> </location> </configuration>

Cuối cùng, bạn có thể viết logic xác thực bằng cách kiểm tra identity của người dùng trong phần mã trang web (sử dụng thuộc tính Page.User, thuộc tính này cung cấp đối tượng WindowsPrincipal). Bạn có thể lấy tên người dùng từ thuộc tính WindowsPrincipal.Identity.Name, và bạn có thể kiểm tra vai trò thành viên trong nhóm bằng

Chương 7: ASP.NET và Web Form

phương thức WindowsPrincipal.IsInRole. Phần mã cho trang web dưới đây sẽ trình bày các kỹ thuật này:

using System; using System.Web;

using System.Web.UI.WebControls; using System.Web.Security.Principal;

public class WindowsSecurityTest : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblMessage; // (Bỏ qua phần mã designer.)

private void Page_Load(object sender, System.EventArgs e) { // Thu lấy identity đã được IIS xác thực.

WindowsIdentity identity = (WindowsIdentity)User.Identity; // Kiểm tra xem nó có phải là một Administrator hay không. bool isAdmin = User.IsInRole(@"BUILTIN\Administrators"); // Hiển thị một vài thông tin về identity.

lblMessage.Text = "You have reached the secured page, " + User.Identity.Name + "." + "<br><br>Authentication Type: " + identity.AuthenticationType.ToString() + "<br>Anonymous: " + identity.IsAnonymous.ToString() + "<br>Authenticated: " + identity.IsAuthenticated.ToString() + "<br>Guest: " + identity.IsGuest.ToString() + "<br>System: " + identity.IsSystem.ToString() + "<br>Administrator: " + isAdmin.ToString(); } } 7

Một phần của tài liệu Các giải pháp lập trình C Sharp_4 pdf (Trang 48 - 52)