【问题标题】:WCF 4.0 SecurityWCF 4.0 安全性
【发布时间】:2010-12-09 16:01:17
【问题描述】:

我是使用 WCF 的新手,需要一些帮助来配置简单 WCF 4.0 服务的安全性。我想允许一个特定的域用户帐户能够访问该服务而没有其他人。我已经看到了一些示例代码,其中帐户凭据是通过调用服务的客户端应用程序中的代理发送的,如下所示: proxy.ClientCredentials.Windows.ClientCredential.UserName = "我的用户名"; proxy.ClientCredentials.Windows.ClientCredential.Password = "我的密码"; 但我不知道如何在我的服务中配置端点以接受该用户作为唯一有权使用该服务的用户。这是我的端点的代码:

    <endpoint address="" binding="wsHttpBinding" bindingConfiguration=""
      contract="EvalServiceLibrary.IService1">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

【问题讨论】:

  • 您使用的是 Windows 身份验证吗?

标签: .net wcf .net-4.0


【解决方案1】:

默认情况下,您的wsHttpBinding 将使用 Windows 凭据,这在 LAN/企业 Intranet 环境中运行良好。

为了限制谁可以调用你的服务,你需要用限制来装饰你的服务类(实现)——这不能在配置中完成。

您可以基于每个操作(服务方法)定义主体权限

public class MyService : IMyServiceContract
{
   [PrincipalPermission(SecurityAction.Demand, User="Domain\\YourUserName")]
   public void Method1() {...}
}

在这种情况下,只有用户 Domain\YourUserName 可以调用此方法 - 其他任何人都会收到安全异常。

阅读更多关于 Fundamentals of WCF Security 的信息 - 特别是 page 4,其中讨论了基于角色的安全性。

当然,可扩展性是 WCF 的标志性功能之一 - 此 gentleman here 创建了一个自定义身份验证模块,允许您使用 Windows 凭据(用户和角色)并在配置文件中定义 WCF 安全设置。

【讨论】:

  • 马克,非常感谢。看起来我需要允许活动目录组而不是个人访问服务。团体服务有装饰吗?
  • @Russ Clark:是的,如果您使用的是 Windows 凭据,我认为 Role="groupname" 应该适用于这种情况。您还可以应用多个这些属性以允许多个用户和多个组允许调用服务方法
猜你喜欢
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2012-02-13
  • 1970-01-01
相关资源
最近更新 更多