2011-07-19 24 views
10

câu hỏi sau giả sử chúng ta đang lưu trữ trong WS một khía cạnh dịch vụ WCF cạnh Asp.Net:Các yêu cầu đối với dịch vụ WCF được lưu trữ bởi WAS có được xác thực bởi đường ống xử lý IIS hay không ...?

"Khi lưu trữ WCF cạnh nhau với Asp.Net - Các WCF lưu trữ chặn cơ sở hạ tầng yêu cầu WCF khi PostAuthenticateRequest event được nâng lên và không trả về việc xử lý vào đường dẫn HTTP HTTP. Các mô-đun được mã hóa để chặn các yêu cầu ở các giai đoạn sau của đường ống không chặn yêu cầu WCF . "

"Với side-by-side cấu hình, WCF cơ sở hạ tầng lưu trữ thông điệp chặn WCF và các tuyến đường họ ra khỏi các đường ống dẫn HTTP"

a) Giả sử WS nhận được yêu cầu cho một dịch vụ WCF, sẽ WCF của cơ chế xác thực (Windows, MembershipProvider hoặc Xác thực tùy chỉnh) được gọi khi sự kiện PostAuthenticateRequest được nâng lên hoặc WCF sẽ xác thực yêu cầu chỉ sau khi nó định tuyến yêu cầu ra khỏi đường dẫn HTTP? Nói cách khác, là cơ chế xác thực của WCF làm việc bên ngoài đường ống xử lý của IIS?

b) Nếu cơ chế xác thực WCF đang hoạt động bên ngoài đường dẫn xử lý IIS, thì tôi giả định FormsAuthenticationModule không liên quan đến việc xác thực máy khách WCF (dịch vụ giả định đang sử dụng xác thực biểu mẫu)?

c) Ngoài ra, nếu cơ chế xác thực của WCF đang hoạt động bên ngoài đường dẫn xử lý IIS, tôi cho rằng IIS/WS phải được cấu hình để xác thực ẩn danh, ngay cả khi dịch vụ là khách hàng xác thực bằng cách sử dụng xác thực cửa sổ?

d) Câu trả lời cho câu hỏi trên của tôi có khác biệt không nếu dịch vụ WCF được IIS7 lưu trữ (ngoài dịch vụ chỉ được sử dụng thiết bị đầu cuối giao tiếp qua giao thức HTTP)?

Cảm ơn bạn

Trả lời

1

Tôi khuyên bạn nên triển khai dự án tăng đột biến kỹ thuật.

Ở cốt lõi, bạn luôn có thể triển khai một thuộc tính mã hóa để đảm bảo các hợp đồng hoạt động của mình.

Bạn có thể bắt đầu bằng cách áp dụng PrincipalPermission (được xây dựng trong) nơi bạn đặt IPrincipal trên Thread.CurrentPrincipal (hàm tạo của dịch vụ wcf) khi được lưu trữ trong IIS, bạn có thể đặt HttpContext.Current.User tuy nhiên HttpContext sẽ là null trong trường hợp của bạn . Để sử dụng PrincipalPermission, bạn sẽ cần có khả năng tạo/thực thi IPrincipal của riêng bạn.

1

Tôi chỉ có thể trả lời phần D và một phần B, nhưng điều này có thể đủ để giải quyết vấn đề bạn đang cố giải quyết: nếu bạn lưu trữ dịch vụ WCF bên trong ứng dụng ASP.Net, thì Xác thực biểu mẫu được hỗ trợ NẾU bạn cho phép khả năng tương thích ASP.Net trong dịch vụ WCF. Chúng tôi sử dụng phương pháp này rộng rãi với các ứng dụng Silverlight của chúng tôi.

Đây là một quá trình gồm hai bước:

1) Trang trí dịch vụ WCF bạn thực hiện lớp với AspNetCompatibilityRequirements thuộc tính (vb.đang ròng dưới đây):

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _ 

2) Thêm các mục sau đây để phần <system.servicemodel> của bạn trong web.config:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
Các vấn đề liên quan