441
Chương 11: Lập trình mạng
Cách tiếp cận mà bạn sử dụng tùy thuộc vào kiểu xác thực mà website sử dụng.
•
Nếu website sử dụng Basic authentication hay Digest authentication, bạn cần gửi kết
hợp username và password, bằng cách tạo một đối tượng
System.Net.
NetworkCredential
và gán nó vào thuộc tính
WebRequest.Credentials
.
•
Nếu website sử dụng Integrated Windows authentication, bạn thực hiện tương tự như
trên. Bạn có thể lấy các thông tin đăng nhập của người dùng hiện hành từ đối tượng
System.Net.CredentialCache
.
•
Nếu website đòi hỏi chứng chỉ, bạn cần nạp chứng chỉ từ một file bằng lớp
System.Security.Cryptography.X509Certificates.X509Certificate
, và thêm nó vào
tập hợp
HttpWebRequest.ClientCertificates
.
Dưới đây là đoạn mã ví dụ cho cả ba cách tiếp cận trên:
using System;
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class DownloadWithAuthentication {
private static void Main() {
string uriBasic, uriIntegrated, uriCertificate;
// Xác thực username và password với Basic authentication.
WebRequest requestA = WebRequest.Create(uriBasic);
requestA.Credentials =
new NetworkCredential("userName", "password");
requestA.PreAuthenticate = true;
// Đăng nhập người dùng hiện hành với
// Integrated Windows authentication.
WebRequest requestB = WebRequest.Create(uriIntegrated);
requestB.Credentials = CredentialCache.DefaultCredentials;
requestB.PreAuthenticate = true;
// Xác thực người dùng bằng chữ ký điện tử.
HttpWebRequest requestC = (HttpWebRequest)
WebRequest.Create(uriCertificate);
X509Certificate cert =
X509Certificate.CreateFromCertFile(@"c:\user.cer");