我正在关注Pluralsight video on Authentication .
我正在尝试向我的 Web 服务添加简单的 PrinciplePermission 身份验证:
[PrincipalPermission(SecurityAction.Demand, Role = "Computer\\Group")]
public String testDBConnection()
{
return "success";
}
在我的 WCF 客户端中,我发送:
client.ClientCredentials.UserName.UserName = "Alice";
client.ClientCredentials.UserName.Password = "alice";
我已经创建了该群组并按照视频将 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
将自动设置,并且它应该可以工作。
关于c# - WCF 中的 PrimaryPermission 身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614857/