543
Chương 13: Bảo mật
// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại
// 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.
[PrincipalPermission(SecurityAction.Demand,
Name = @"MACHINE\nnbphuong81")]
public static void ProtectedMethod1() { /*...*/}
// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại
// là một thành viên của vai trò "Managers" hay "Developers". Bạn chỉ
// có thể diễn tả mối quan hệ OR (không thể diễn tả mối quan hệ AND).
// Tên của định danh là không quan trọng.
[PrincipalPermission(SecurityAction.Demand,
Role = @"MACHINE\Managers")]
[PrincipalPermission(SecurityAction.Demand,
Role = @"MACHINE\Developers")]
public static void ProtectedMethod2() { /*...*/}
// Một yêu cầu bảo mật khai báo dựa-trên-vai-trò: principal hiện tại
// mô tả một định danh với tên là "nnbphuong81" và là một thành viên
// của vai trò "Managers".
[PrincipalPermission(SecurityAction.Demand,
Name = @"MACHINE\nnbphuong81",
Role = @"MACHINE\Managers")]
public static void ProtectedMethod3() { /*...*/}
15.
15.
Gi nh n ng
i dùng Windows
ả ậ
ườ
Gi nh n ng
i dùng Windows
ả ậ
ườ
Bạn muốn mã lệnh của bạn chạy trong ngữ cảnh của một người dùng Windows
nào đó chứ không phải tài khoản người dùng hiện đang tích cực.
Thu lấy đối tượng
System.Security.Principal.WindowsIdentity
mô tả người
dùng Windows mà bạn cần giả nhận, rồi gọi phương thức
Impersonate
của đối
tượng
WindowsIdentity
.
Mỗi tiểu trình Windows đều có một access token kết giao—mô tả tài khoản Windows mà tiểu
trình hiện đang chạy trên danh nghĩa của tài khoản này. Hệ điều hành Windows sử dụng
access token để xác định một tiểu trình có các quyền thích đáng để thực hiện các thao tác
được-bảo-vệ trên danh nghĩa của tài khoản này hay không, như đọc/ghi file, khởi động lại hệ
thống, và thay đổi thời gian hệ thống.
Theo mặc định, một ứng dụng được-quản-lý chạy trong ngữ cảnh của tài khoản Windows đã
thực thi ứng dụng. Điều này là hoàn toàn bình thường, nhưng đôi lúc bạn muốn chạy ứng