WCF中的PrincipalPermission身份验证出错
本文关键字:出错 身份验证 PrincipalPermission 中的 WCF | 更新日期: 2023-09-27 18:27:18
我正在关注一个关于身份验证的Pluralsight视频。
我正在尝试为我的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
将自动设置,并且它应该可以工作。
principle对象是一个只读对象,它在加载时被设置为应用程序的安全设置的一部分。我能够绕过它的方法是创建一个继承IPrincipal的类。您需要在WCF应用程序中执行此操作。