c# - WCF 中的 PrimaryPermission 身份验证错误

标签 c# asp.net wcf security

我正在关注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/

相关文章:

C# 不一致的可访问性 : return type is less accessible than method

WCF - 如何以更面向对象的方式定义服务?

c# - 为什么允许使用多个分号?

javascript - 在 asp.net 中,Ajax 返回数据表总是出现错误部分

c# - 将 ASPX 页面编译成独立程序

asp.net - 为什么 ASP.NET 页面(表单和 MVC)是动态编译的?

c# - 是否有用于处理 Internet 上的大型数据集的设计模式?

javascript - 我们应该在哪里存储 JavaScript 调用的服务连接 URL?

c# - 未设置 ASP.NET MVC 对象引用(向模型添加值)

c# - 远程桌面连接中的用户 IP