【问题标题】:WCF netTcpBinding & ASP.NET MembershipProvider without PrincipalPermission attribute没有 PrincipalPermission 属性的 WCF netTcpBinding 和 ASP.NET MembershipProvider
【发布时间】:2018-04-17 17:41:04
【问题描述】:

我有一个 WCF 服务,使用 netTcpBinding 和一个自定义 ASP.NET 成员资格提供程序(从服务器上的配置文件中读取用户;将是 ServiceAccounts)。传输安全是默认设置。

我使用 PrincipalPermssions 属性来说明这个方法,用户必须是这个角色。

  • 效果很好

问题 如果 PrincipalPermssions 属性位于 Service Method 上,则成员资格提供程序似乎才起作用。

有没有一种方法可以将成员资格提供者身份验证应用于所有服务方法,而不管属性如何?

或者是否有另一种默认锁定所有服务方法的方法? - 而不仅仅是用户是有效的 Windows 用户。

【问题讨论】:

    标签: c# .net wcf wcf-security nettcpbinding


    【解决方案1】:

    来自《Programming WCF Services》一书:

    虽然 PrincipalPermission 属性的定义可以应用于 方法和类,在 WCF 服务类中,您只能将其应用于方法。这 原因是在 WCF 中,与普通类不同,服务类构造函数总是 无论使用何种身份验证机制,都在具有空白标识的 GenericPrincipal 下执行。结果,构造函数运行的身份是未经身份验证的,并且总是会失败任何类型的授权尝试(即使 客户端是角色的成员,即使不使用 Windows 组)

    如果您使用可以初始化服务实例并授权调用者的会话,我建议您提供一个 Initialize 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2011-07-23
      相关资源
      最近更新 更多