2010-11-08 3 views
7

Tôi đang nâng cấp ứng dụng từ .net 1.1 lên 3.5. Ứng dụng này kết nối với dịch vụ WCF. Trước đây khách hàng dịch vụ web được cấu hình để sử dụng mã bảo vệ, như vậy:Làm thế nào để thiết lập một Mã Bảo mật trong WCF?

RegistrationWSWse registrationService = new RegistrationWSWse(); 
Microsoft.Web.Services2.Security.Tokens.UsernameToken token = new Microsoft.Web.Services2.Security.Tokens.UsernameToken("some username", "some password", Microsoft.Web.Services2.Security.Tokens.PasswordOption.SendPlainText); 
registrationService.RequestSoapContext.Security.MustUnderstand=false; 
registrationService.RequestSoapContext.Security.Tokens.Add(token); 

Bây giờ tôi đã bổ sung thêm một tài liệu tham khảo dịch vụ mới trong Visual Studio để các dịch vụ web, nhưng tự động tạo mã không cung cấp bất kỳ cách nào để đặt tiêu đề bảo mật, như trên.

Đây có phải là thứ cần được định cấu hình trong tệp cấu hình, phần system.serviceModel không?


Cập nhật

Lý do tôi không thấy các thuộc tính username/password là vì tôi đã làm việc với các giao diện dịch vụ, không phải là lớp thực hiện thực tế.

tôi đã có thể thiết lập những điều này bằng cách đúc các ví dụ để các loại, như thế này:

((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.UserName = userName; 
((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.Password = password; 

Điều quan trọng khác mà bạn phải làm là cập nhật file app.config khách hàng của bạn. Nếu bạn không làm điều này tên người dùng/mật khẩu sẽ không được đặt int ông SOAP tiêu đề. Ví dụ:

<security mode="TransportWithMessageCredential" /> 

Trả lời

1

Kiểm tra this article on MSDN. This post cũng có một số thông tin tốt về câu hỏi của bạn.

+0

Cảm ơn các liên kết Kamyar. Vấn đề là tôi đã tương tác với giao diện dịch vụ, không phải là lớp proxy. Tôi chỉ cần làm một diễn viên để đặt tên người dùng/mật khẩu - xem ở trên. –

+0

@Paul: Rất vui khi bạn làm việc đó. Tôi đã học được một số công cụ mới quá. Cảm ơn. – Kamyar