我正在追踪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将自动设置,并且可以正常工作。

10-08 05:56