我创建了一个使用Windows身份验证的WCF服务,并希望对其进行设置,以便只有在用户位于Windows组中时才能访问它。我目前在代码中使用以下属性来实现这一目标
[PrincipalPermission(SecurityAction.Demand, Role = "Domain\MyGroup")]
问题是我必须在每个方法上执行此操作并编译,如果我想更改组。有没有办法让我可以在配置文件和整个服务中设置具有访问权限的组?
我在配置文件中尝试过以下操作,但这似乎无法正常工作
<security>
<authentication>
<windowsAuthentication authPersistSingleRequest="true" enabled="true"/>
</authentication>
<authorization>
<add accessType="Allow" roles="Domain\MyGroup" />
</authorization>
</security>
答案 0 :(得分:2)
好的我明白了。我的配置文件设置如下
<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>
还必须设置
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
在我的班级上实施WCF合同
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
我想这意味着我使用ASP身份验证而不是WCF,但我为我工作
答案 1 :(得分:0)
PrincipalPermission
属性来自.NET代码访问安全功能,与WCF无关。如果服务托管在IIS中,则可以采用更灵活的方式执行此操作MSDN post. WCF还支持不同的自定义身份验证机制as described here.