285
Chương 7: ASP.NET và Web Form
Bạn cũng có thể thay đổi tài khoản dùng để thực thi các ứng dụng hoặc đoạn mã nào đó bằng
kỹ thuật giả nhận. Ví dụ, để cấu hình một ứng dụng Web chạy dưới một tài khoản người dùng
khác, bạn cần thêm thẻ
<identity>
vào file Web.config như sau:
<configuration>
<system.web>
<!-- Bỏ qua các thiết lập khác. -->
<identity impersonate="true" name="domain\user" password="pwd"/>
</system.web>
</configuration>
Bạn cũng có thể chỉ thị ứng dụng Web sử dụng identity đã được IIS xác thực, đó sẽ là tài
khoản nặc danh IUSR_[ServerName] nếu bạn không sử dụng Windows authentication (đã
được thảo luận trong mục 7.8). Bạn chỉ cần thêm thẻ
<identity>
mà không phải thêm bất cứ
thông tin xác thực nào:
<identity impersonate="true"/>
Nhớ rằng, đối với kiểu giả nhận này, tài khoản người dùng sẽ yêu cầu truy xuất đọc/ghi đến
thư mục Temporary ASP.NET Files (nơi lưu trữ các file ASP.NET đã được biên dịch—được
định vị tại \[WindowsDirectory]\Microsoft.NET\Framework\ [version]\Temporary ASP.NET
Files).
Cuối cùng, bạn cũng có thể sử dụng kỹ thuật giả nhận bằng mã lệnh (vấn đề này sẽ được mô
tả chi tiết trong mục 13.15). Tuy vậy, ví dụ dưới đây sẽ làm việc cùng với Windows
authentication. Nếu IIS đã xác thực người dùng (được mô tả trong mục 7.8), identity đó sẽ
được thừa nhận khi sử dụng phương thức
WindowsIdentity.Impersonate
. Để sử dụng đoạn
mã này, bạn phải nhập không gian tên
System.Security.Principal
.
if (User.GetType() == typeof(WindowsPrincipal)) {
WindowsIdentity id = (WindowsIdentity)User.Identity;
WindowsImpersonationContext impersonate = id.Impersonate();
// (Thực hiện các tác vụ với ID này.)
// Trả lại ID.
impersonate.Undo();
} else {
// Người dùng không được xác thực.
// Ném lỗi hoặc thực hiện các bước khác.
}