Nếu bạn đang lưu trữ dịch vụ WCF của bạn trong IIS, nó sẽ chạy trong quá trình lao động ASP.NET, có nghĩa là bạn có thể cấu hình xác thực và ủy quyền như bạn sẽ làm gì với các dịch vụ web ASMX:
<system.Web>
<authentication mode="Windows"/>
<authorization>
<allow roles=".\Administrators"/>
<deny users="*"/>
</authorization>
</system.Web>
Sau đó, bạn sẽ phải tắt quyền truy cập vô danh vào điểm cuối của bạn trong IIS và thay vào đó bật Xác thực tích hợp Windows.
Trong bảng điều khiển quản lý IIS, bạn thực hiện việc đó bằng cách hiển thị hộp thoại 'Properties' cho thư mục ảo của bạn. Sau đó, bạn sẽ tìm thấy cài đặt bảo mật trong tab 'Bảo mật thư mục'.
Tất nhiên, kênh liên lạc duy nhất có sẵn sẽ là HTTP. Khách hàng sẽ phải cung cấp danh tính Windows của họ trong yêu cầu tại vận chuyển cấp với các thiết lập này:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WindowsSecurity">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost/myservice"
binding="wsHttpBinding"
bindingConfiguration="WindowsSecurity"
contract="IMyService" />
</client>
</system.serviceModel>
Lưu ý rằng nếu điểm cuối dịch vụ của bạn sử dụng wsHttpBinding sau đó bạn cũng sẽ phải bổ sung SSL để endpoint của bạn vì đó là một yêu cầu được WCF thi hành khi bạn sử dụng bảo mật mức vận tải.
Nếu bạn thay vì đi cho basicHttpBinding, bạn sau đó có thể sử dụng một kém an toàn chế độ xác thực có sẵn trong WCF gọi TransportCredentialOnly, nơi SSL không còn cần thiết.
Để biết thêm thông tin chi tiết, here là tổng quan tốt về cơ sở hạ tầng bảo mật trong WCF.
Nguồn
2008-11-14 10:21:12
Xin lưu ý rằng nếu bạn muốn thực hiện việc này, bạn cần bật chế độ tương thích ASP.NET trong tệp web.config của mình. Nếu không, nó sẽ không hoạt động (và sẽ không ném một lỗi nào cả). – Rocklan
Lưu ý: để làm việc này, system.web/roleManager/@enabled phải là false, hoặc bị bỏ qua, nếu không các role sẽ là IIS .Net Roles, chứ không phải các nhóm Windows. – Polyfun