485
Chương 12: Dịch vụ Web XML và Remoting
5.
5.
Thi t l p thông tin xác th c cho d ch v Web XML
ế ậ
ự
ị
ụ
Thi t l p thông tin xác th c cho d ch v Web XML
ế ậ
ự
ị
ụ
Bạn muốn gửi các thông tin đăng nhập từ client của dịch vụ Web XML đến IIS
authentication.
Sử dụng thuộc tính
Credentials
của lớp proxy. Bạn có thể tạo một đối tượng
NetworkCredential
mới chứa username và password; hoặc sử dụng
CredentialCache
để lấy các thông tin xác thực của người dùng hiện hành.
Cũng giống như trang web, dịch vụ Web XML có thể được sử dụng cùng với IIS
authentication. Những gì bạn cần làm là đặt dịch vụ Web XML vào một thư mục ảo hạn chế
việc truy xuất nặc danh. Tuy nhiên, nếu người dùng có thể cung cấp các thông tin ánh xạ đến
một tài khoản người dùng hợp lệ, người dùng này sẽ được xác thực và bạn có thể lấy các
thông tin xác thực này thông qua đối tượng
WebService.User
.
Khác với trang web, dịch vụ Web XML không có sẵn phương thức nào để thu lấy thông tin xác
thực từ client vì dịch vụ Web XML được thực thi bởi các ứng dụng khác, chứ không phải bởi
người dùng. Do đó, ứng dụng đang tương tác với dịch vụ Web XML sẽ chịu trách nhiệm nhập
bất kỳ thông tin xác thực cần thiết nào.
Ví dụ sau mô phỏng một dịch vụ Web XML có thực hiện xác thực người dùng.
GetIISUser
trả
về người dùng đã được IIS xác thực. Nếu truy xuất nặc danh được phép thì kết quả sẽ là một
chuỗi rỗng. Nếu truy xuất nặc danh bị từ chối thì kết quả sẽ là một chuỗi có dạng
[DomainName]\[UserName] hay [ComputerName]\[UserName].
public class AuthenticationTest : System.Web.Services.WebService {
// Lấy thông tin về người dùng đã được IIS xác thực.
[WebMethod()]
public string GetIISUser() {
return User.Identity.Name;
}
}
Bước cuối cùng là tạo một client có thể cung cấp các thông tin xác thực. Các thông tin này
được nhập thông qua thuộc tính
Credentials
của đối tượng proxy (thiết lập thuộc tính này
tương tự như thiết lập thuộc tính
WebRequest.Credentials
khi lấy về một trang web—tham
khảo mục 11.3). Đoạn mã dưới đây trình bày cách truy xuất một dịch vụ Web XML sử dụng
Basic authentication (xác thực cơ bản):
// Tạo proxy.
localhost.AuthenticationTest proxy = new localhost.AuthenticationTest();
// Tạo thông tin xác thực.
proxy.Credentials = new System.Net.NetworkCredential(
"myUserName", "myPassword");