2010-04-09 51 views
15

Tôi có một dịch vụ WCF muốn hỗ trợ basicHttpBinding và webHttpBinding. Khi khách hàng đăng nhập thành công, máy chủ sẽ tạo ra một mã thông báo cho khách hàng để chuyển đến máy chủ trên tất cả các yêu cầu thực hiện sau này. Câu hỏi là làm thế nào khách hàng có thể vượt qua các mã thông báo cho máy chủ? Tôi không muốn thêm thông số bổ sung vào mọi phương thức web để giữ mã thông báo.WCF cách chuyển mã thông báo để xác thực?

Trả lời

17

Thông thường, cách tốt nhất để làm điều gì đó như thế này là truyền "siêu thông tin" như vậy trong tiêu đề WCF. Bạn có thể dễ dàng tạo ra một thanh tra thư để mở rộng WCF (nó thực sự không phải là đáng sợ và khó làm!) Mà sẽ bơm mã thông báo vào mỗi yêu cầu gửi đi từ khách hàng, và lấy nó từ tiêu đề và xác nhận nó ở phía máy chủ.

Có một số bài viết trên blog khá tốt trên mạng hiển thị cho bạn làm thế nào để tạo ra một thanh tra viên thông điệp:

Kiểm tra các hai giao diện có liên quan để triển khai:

  • IClientMessageInspector về phía khách hàng, trong đó có một BeforeSendRequestAfterReceiveReply nhắn để thực hiện
  • IDispatchMessageInspector ở phía máy chủ, trong đó có một AfterReceiveRequestBeforeSendReply phương pháp để thực hiện
+0

Cảm ơn, nó đang làm việc. Điều này chính xác những gì tôi cần. – Kevin

+0

Mã thông báo trong tiêu đề không tăng vấn đề bảo mật? –

+0

@Learning Tôi biết đó là một nhận xét cũ, nhưng bạn nên sử dụng kết nối an toàn ít nhất và bạn nên áp dụng một số loại mã hóa cho mã thông báo mà chỉ bạn và khách hàng mới biết cách triển khai. – Silvermind

Các vấn đề liên quan