Không cuộn của riêng bạn và thêm thông số rõ ràng - đó thực sự là cách quá nhiều công việc!
Kiểm tra các tính năng bảo mật của WCF - nhiều tính năng có sẵn! Bạn có thể ví dụ: bảo mật thư và bao gồm thông tin đăng nhập bên trong thư - tất cả ra khỏi hộp, không yêu cầu mã hóa thêm bên cạnh bạn!
Kiểm tra bài viết này tuyệt vời trên WCF bảo mật bằng cách Michele Leroux Bustamante: http://www.devx.com/codemag/Article/33342
Trong trường hợp của bạn, tôi muốn đề nghị an ninh thông điệp với thông tin tên người dùng - bạn cần phải cấu hình này trên cả hai đầu:
server-side:
<bindings>
<basicHttpBinding>
<binding name="SecuredBasicHttp" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="YourService">
<endpoint address="http://localhost:8000/MyService"
binding="basicHttpBinding"
bindingConfiguration="SecuredBasicHttp"
contract="IYourService" />
</service>
</services>
Và bạn cần phải áp dụng các thiết lập tương tự trên các mặt hàng:
<bindings>
<basicHttpBinding>
<binding name="SecuredBasicHttp" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8000/MyService"
binding="basicHttpBinding"
bindingConfiguration="SecuredBasicHttp"
contract="IYourService" />
</client>
Bây giờ máy chủ và khách hàng của bạn thỏa thuận về an ninh - trên máy khách, sau đó bạn muốn chỉ định tên người dùng và mật khẩu để sử dụng như thế này:
YourServiceClient client = new YourServiceClient();
client.ClientCredentials.UserName.UserName = "your user name";
client.ClientCredentials.UserName.Password = "top$secret";
Về phía server, bạn sẽ cần để thiết lập các thông tin xác thực người dùng này đang được xác thực như thế nào - thường là chống lại tên miền Windows (Active Directory), hoặc chống lại mô hình nhà cung cấp thành viên ASP.NET. Trong mọi trường hợp, nếu không thể xác minh thông tin xác thực người dùng đối với cửa hàng đó mà bạn xác định, cuộc gọi sẽ bị từ chối.
Hy vọng điều này sẽ giúp bảo mật một chút là một chủ đề lớn trong WCF và có rất nhiều tùy chọn - nó có thể hơi khó khăn, nhưng cuối cùng, thường thì nó có ý nghĩa! :-)
Marc
Có vẻ tốt; Bạn có biết điều này (hoặc một cái gì đó tương tự) có thể sử dụng được không nếu sử dụng httpwebrequest thô? Tôi có một ngăn xếp RPC tùy chỉnh mà tôi muốn bảo mật theo cùng một cách (tôi có thể yêu cầu như một queston mới nếu nó là một câu trả lời không tầm thường) –
Nó nên làm có; xem http://www.silverlightshow.net/items/Cookies-in-Silverlight-Web-Requests.aspx – blowdart
Ta; Tôi sẽ xem xét điều đó ;-p –