2011-11-21 26 views
5

Tôi đã tạo dịch vụ WCF sử dụng xác thực cửa sổ và muốn đặt nó để chỉ có thể truy cập nếu người dùng nằm trong nhóm Windows. Hiện tại, tôi sử dụng thuộc tính sau trong mã để thực hiện điều này xảy raCho phép truy cập WCF dựa trên nhóm được đặt trong web.config

[PrincipalPermission(SecurityAction.Demand, Role = "Domain\MyGroup")] 

Vấn đề với điều này là tôi phải làm điều đó trên mỗi phương pháp và biên dịch nếu tôi muốn thay đổi nhóm. Có cách nào để tôi có thể đặt nhóm có quyền truy cập trong tệp cấu hình và cho toàn bộ dịch vụ không?

Tôi đã thử những điều sau đây trong tập tin cấu hình của tôi, nhưng điều này không xuất hiện để làm việc

<security> 
    <authentication> 
     <windowsAuthentication authPersistSingleRequest="true" enabled="true"/> 
    </authentication> 
    <authorization> 
     <add accessType="Allow" roles="Domain\MyGroup" /> 
    </authorization> 
</security> 

Trả lời

1

Ok tôi đã tìm ra. Tôi có tập tin cấu hình thiết lập như sau

<security> 
    <authentication> 
    <windowsAuthentication enabled="true" /> 
    </authentication> 
    <authorization> 
    <remove users="*" roles="" verbs="" /> 
    <remove users="?" roles="" verbs="" /> 
    <add accessType="Deny" users="?" /> 
    <add accessType="Allow" roles="Domain\MyGroup" /> 
    </authorization> 
</security> 

Cũng phải thiết lập

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

Và trên lớp học của tôi mà thực hiện hợp đồng WCF

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

Tôi đoán điều này có nghĩa Im sử dụng ASP xác thực thay vì WCF nhưng tôi làm việc cho tôi

+0

Điều này có áp đặt bất kỳ lần truy cập hiệu suất đáng kể nào không? – xr280xr

0

Thuộc tính PrincipalPermission là từ các chức năng bảo mật truy cập mã NET và không liên quan đến WCF. Một cách linh hoạt hơn để thực hiện việc này nếu dịch vụ được lưu trữ trong IIS được hiển thị trong số MSDN post. WCF này cũng hỗ trợ các cơ chế xác thực tùy chỉnh khác nhau as described here.

+0

Bạn đang xác thực nhầm lẫn với ủy quyền. PrincipalPermissionAttribute liên quan đến phần sau. Trong khi đúng là thuộc tính này là một phần của CAS, bạn vẫn chưa thực sự trả lời câu hỏi. – xr280xr

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