我正在追踪Pluralsight video on Authentication。
我试图将简单的PrinciplePermission身份验证添加到我的Web服务:
[PrincipalPermission(SecurityAction.Demand, Role = "Computer\\Group")]
public String testDBConnection()
{
return "success";
}
在WCF客户端中,我正在发送:
client.ClientCredentials.UserName.UserName = "Alice";
client.ClientCredentials.UserName.Password = "alice";
我已经创建了该组,并根据视频将爱丽丝添加到了该组,但是现在。
我不断收到错误:
“请求主体权限失败。”
知道有什么问题吗?
最佳答案
您需要一些代码来在请求到达时在服务器上创建IPrincipal
。
最简单的方法可能是使用ASP.NET RoleProvider
,您需要为其配置行为,例如:
<system.serviceModel>
...
<behaviors>
<serviceBehaviors>
<behavior name=...>
...
<serviceAuthorization principalPermissionMode="UseAspNetRoles"
roleProviderName="MyRoleProvider" />
</behavior>
</serviceBehaviors>
...
和:
<system.web>
...
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear/>
<add name="MyRoleProvider"
...
如果您以这种方式正确配置了
RoleProvider
,则Thread.CurrentPrincipal
将自动设置,并且可以正常工作。