CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 541

541

Chương 13: Bảo mật

Thread.CurrentPrincipal

. Việc này sẽ ngăn bộ thực thi gán các đối tượng

IPrincipal

mặc định hoặc tạo ra các đối tượng mới dựa trên chính sách principal.

Bảng 13.4 Các thành viên thuộc kiểu liệt kê PrincipalPolicy

Tên thành viên

Mô tả

NoPrincipal

Không có đối tượng

IPrincipal

nào được tạo ra,

Thread.CurrentPrincipal

trả về một tham chiếu

null

.

UnauthenticatedPrincipal

Một đối tượng

System.Security.Principal.

GenericPrincipal

rỗng được tạo ra và được gán

cho

Thread.CurrentPrincipal

.

WindowsPrincipal

Một đối tượng

WindowsPrincipal

(mô tả người

dùng Windows đã đăng nhập) được tạo ra và
được gán cho

Thread.CurrentPrincipal

.

Bất kể sử dụng phương pháp nào để thiết lập

IPrincipal

cho tiểu trình hiện hành, bạn cũng

phải làm như thế trước khi sử dụng các yêu cầu bảo mật RBS, nếu không thông tin về người
dùng (

IPrincipal

) sẽ không có hiệu lực để bộ thực thi có thể xử lý yêu cầu. Bình thường, khi

chạy trên nền Windows, bạn thiết lập chính sách principal của một miền ứng dụng là

PrincipalPolicy.WindowsPrincipal

để thu lấy thông tin về người dùng Windows:

// Thu lấy một tham chiếu đến miền ứng dụng hiện hành.

AppDomain appDomain = System.AppDomain.CurrentDomain;

// Cấu hình miền ứng dụng hiện hành sao cho sử dụng các

// principal dựa-trên-Windows.

appDomain.SetPrincipalPolicy(

System.Security.Principal.PrincipalPolicy.WindowsPrincipal);

File RoleBasedSecurityExample.cs (trong đĩa CD đính kèm) minh họa cách sử dụng các yêu
cầu RBS bắt buộc và khai báo. Phần thứ nhất trình bày ba phương thức được bảo vệ bằng các
yêu cầu RBS bắt buộc. Nếu đối tượng

Thread.CurrentPrincipal

không thỏa các đòi hỏi về tên

người dùng và tư cách thành viên, yêu cầu sẽ ném ngoại lệ

SecurityException

.

public static void ProtectedMethod1() {

// Một yêu cầu bảo mật bắt buộc dựa-trên-vai-trò: principal

// hiện hành mô tả một định danh với tên là "nnbphuong81",

// các vai trò của principal là không quan trọng.

System.Security.Permissions.PrincipalPermission perm =

new System.Security.Permissions.PrincipalPermission

(@"MACHINE\nnbphuong81", null);

perm.Demand();

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.