2010-12-09 114 views
2

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

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

您是否使用Windows身份验证? – 2010-12-09 16:05:26

回答

2

默认情况下,wsHttpBinding将使用Windows凭据,这在LAN /企业内部网环境中正常工作。

为了限制谁可以调用你的服务,你需要修改你的服务类(实现)的限制 - 这不能在config中完成。

可以定义在每个操作(服务方法)的主要权限的基础

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安全设置。

+0

Marc,谢谢,帮助很大。看起来我需要允许活动目录组访问服务而不是个人。是否有装饰服务的组? – 2010-12-09 17:13:30