【问题标题】:Error with PrincipalPermission authentication in WCFWCF 中的 PrincipalPermission 身份验证错误
【发布时间】:2012-03-25 18:29:39
【问题描述】:

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

我已经根据视频创建了群组并将爱丽丝添加到其中,但现在......

我不断收到错误:

“请求主体权限失败。”

知道有什么问题吗?

【问题讨论】:

  • 当使用ClientCredentials 发送用户名和密码时,我最近注意到在服务器端的Thread.CurrentPrinciple 中没有可用的信息。 PrinciplePermission 使用Thread.CurrentPrinciple 来验证用户。不知道能不能这样配置。
  • @Steven 感谢您的回复,很抱歉我不知道 Thread.CurrentPriciple 是什么,您能否提供更多详细信息?
  • Thread.CurrentThread.CurrentPrincipel 返回一个IPrincipal 实例,通常是WindowsPrincipel。这包含正在运行线程的当前用户的信息。
  • 您解决了吗?我看到了同样的错误
  • @Stephen Nutt 我最终采用了不同的方法,因为我需要的只是简单的用户名密码身份验证。回想起来,我怀疑这可能是因为我没有 SSL 证书,因为他们在视频中做了,后来证明这对我来说是必不可少的。

标签: c# asp.net wcf security


【解决方案1】:

主体对象是一个只读对象,在加载时会被设置为应用程序安全设置的一部分。我能够绕过它的方法是创建一个继承 IPrincipal 的类。您需要在 WCF 应用程序中执行此操作。

【讨论】:

    【解决方案2】:

    当请求到达时,您需要一些代码在服务器上创建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 将自动设置,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 1970-01-01
      • 2011-07-05
      • 2013-07-10
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      相关资源
      最近更新 更多