2010-03-30 38 views
7

Khi tôi triển khai dịch vụ dữ liệu WCF của tôi để sản xuất lưu trữ tôi bắt đầu nhận được lỗi sau (hoặc tương tự tùy thuộc vào chương trình auth đang hoạt động):Làm thế nào để vô hiệu hóa các chương trình xác thực cho WCF Data Services

IIS xác thực định lược đồ 'Cơ bản, Ẩn danh', nhưng ràng buộc chỉ hỗ trợ đặc tả chính xác một lược đồ xác thực. Các lược đồ xác thực hợp lệ là Digest, Thoả thuận, NTLM, Cơ bản hoặc Ẩn danh. Thay đổi cài đặt IIS sao cho chỉ sử dụng lược đồ xác thực đơn .

Dường như WCF Data Services (WCF nói chung?) Không thể xử lý nhiều hơn một lần chương trình xác thực đang hoạt động.

OK vì vậy tôi biết rằng tôi có thể vô hiệu hóa tất cả-nhưng-một chương trình xác thực trên ứng dụng web thông qua bảng điều khiển IIS .... thông qua một yêu cầu hỗ trợ !!

Có cách nào để chỉ định một lược đồ xác thực duy nhất ở cấp độ dịch vụ trong web.config không?

Tôi nghĩ điều này có thể là thẳng về phía trước như thực hiện một sự thay đổi để <system.serviceModel> nhưng ... nó chỉ ra rằng WCF Data Services không cấu hình tự trong cấu hình web. Nếu bạn nhìn vào lớp DataService<> nó không thực hiện một [ServiceContract] do đó bạn không thể tham chiếu nó trong <service><endpoint> ... mà tôi đoán là cần thiết để thay đổi cấu hình của nó thông qua XML.

P.S. Máy chủ của chúng tôi đang sử dụng II6, nhưng cả hai giải pháp cho IIS6 & IIS7 được đánh giá cao.

Trả lời

16

Thứ nhất, bạn có thể định cấu hình Dịch vụ dữ liệu trên tệp cấu hình web. Hợp đồng được sử dụng bởi DataService được gọi là System.Data.Services.IRequestHandler.

Đây là những gì bạn có thể thực hiện trong tệp cấu hình web để cấu hình nó.

Trên thẻ Dịch vụ của phần tử System.ServiceModel thêm

<service name="{you service type name including the namespace i.e. myapplication.myservice}"> 
    <endpoint address="" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler"> 
    </endpoint> 
</service> 

Một khi bạn đã có bạn có thể bắt đầu việc cấu hình tất cả các cách cư xử của điều sử dụng các yếu tố cấu hình tiêu chuẩn WCF.

Thứ hai để kích hoạt hoặc vô hiệu hóa phương pháp xác thực cho một dịch vụ cụ thể trong IIS bạn có thể làm như sau:

Trên snap trong cho IIS nhấn chuột phải tập tin dịch vụ của bạn (ví dụ: yourservice.svc) và chọn Properties. Khi thuộc tính vào tab File Security và chọn nút Edit trên hộp nhóm chứng thực và kiểm soát truy cập. sau đó nó cũng giống như thiết lập bảo mật thư mục trong IIS.

Như một gợi ý cuối cùng theo bất kỳ sự cố nào xảy ra khi bạn cấu hình nó bằng cấu hình xml, được ghi trong WCF, ghi nhật ký dữ liệu theo wcf rất phong phú và rất thông tin.

bạn có thể tìm hiểu thêm về điều đó trên WCF Administration and Diagnostics

Tôi hy vọng tôi có thể giúp bạn với vấn đề của bạn

cho tôi biết làm thế nào điều đi.

Trân

Daniel Portella

UPDATE:

Hi Schneider

Để xác định cơ chế thẩm định trong xml đọc dưới đây

Đối với cửa sổ xác thực như một ví dụ

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding name="MyBindingName" > 
      <security mode="Transport"> 
      <transport clientCredentialType="Windows" /> 
      </security> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service name="{you service type name including the namespace i.e. myapplication.myservice}"> 
     <endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler"> 
     </endpoint> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 

Đối với các loại xác thực hãy kiểm tra các thư viện MSDN cho ví dụ

Common Scenarios for security

+0

nhờ. cấu hình điểm cuối hữu ích. bây giờ tôi có mà tôi sẽ tìm một cách để xác định chương trình auth trong xml ... – Schneider

+0

thêm một cập nhật trên hy vọng ti giải thích làm thế nào để thiết lập xác thực cho dịch vụ – dmportella

+0

Nếu tôi có thể tôi sẽ cung cấp cho bạn tiền thưởng ..! Cảm ơn bạn rất nhiều! – Rashack

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