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

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

WindowsPrincipal

. Cuối cùng, gọi phương thức

IsInRole

của đối tượng

WindowsPrincipal

để xác định người dùng này có nằm trong một nhóm Windows

nào đó hay không.

Cơ chế RBS của .NET Framework trừu tượng hóa các tính năng bảo mật dựa-trên-người-dùng
của hệ điều hành nằm dưới thông qua hai giao diện chính sau đây:

System.Security.Principal.IIdentity

System.Security.Principal.IPrincipal

Giao diện

IIdentity

mô tả thực thể mà mã lệnh hiện đang chạy trên danh nghĩa của thực thể

này, chẳng hạn một người dùng hoặc tài khoản dịch vụ (service account). Giao diện

IPrincipal

mô tả

IIdentity

của thực thể và tập các vai trò mà thực thể này thuộc về. Một vai

trò chỉ là một sự phân loại, dùng để nhóm các thực thể với các khả năng bảo mật tương tự
nhau, chẳng hạn một nhóm người dùng Windows.
Để tích hợp RBS với bảo mật người dùng Windows, .NET Framework cung cấp hai lớp sau
đây (hiện thực giao diện

IIdentity

IPrincipal

):

System.Security.Principal.WindowsIdentity

System.Security.Principal.WindowsPrincipal

Lớp

WindowsIdentity

hiện thực giao diện

IIdentity

và mô tả một người dùng Windows. Lớp

WindowsPrincipal

hiện thực

IPrincipal

và mô tả tập các nhóm Windows mà người dùng này

thuộc về. Vì .NET RBS là một giải pháp chung được thiết kế sao cho độc lập nền, bạn không
thể truy xuất các tính năng và các khả năng của tài khoản người dùng Windows thông qua giao
diện

IIdentity

IPrincipal

, bạn phải sử dụng trực tiếp các đối tượng

WindowsIdentity

WindowsPrincipal

.

Để xác định người dùng hiện hành có phải là thành viên của một nhóm Windows nào đó hay
không, trước tiên bạn phải gọi phương thức tĩnh

WindowsIdentity.GetCurrent

. Phương thức

này trả về một đối tượng

WindowsIdentity

mô tả người dùng Windows mà tiểu trình hiện đang

chạy trên danh nghĩa của người dùng này. Kế tiếp, tạo một đối tượng

WindowsPrincipal

mới

và truyền đối tượng

WindowsIdentity

cho phương thức khởi dựng. Cuối cùng, gọi phương

thức

IsInRole

của đối tượng

WindowsPrincipal

để kiểm tra xem người dùng này có nằm trong

một nhóm (vai trò) cụ thể nào đó hay không.

IsInRole

trả về

true

nếu người dùng này là

thành viên của nhóm đã được chỉ định, ngược lại trả về

false

.

Bạn có thể thu lấy tham chiếu

IPrincipal

đến một đối tượng

WindowsPrincipal

bằng thuộc tính tĩnh

CurrentPrincipal

của lớp

System.Threading.Thread

. Tuy

nhiên, kỹ thuật này tùy thuộc vào cấu hình chính sách principal của miền ứng
dụng hiện hành; mục 13.14 sẽ thảo luận vấn đề này chi tiết hơn.

Phương thức

IsInRole

có ba phiên bản nạp chồng:

Phiên bản thứ nhất nhận một chuỗi chứa tên của nhóm cần kiểm tra. Tên nhóm phải có
dạng

[DomainName]\[GroupName]

đối với các nhóm dựa-trên-miền và phải có dạng

[MachineName]\[GroupName]

đối với các nhóm được định nghĩa cục bộ. Nếu muốn kiểm

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.