2012-01-24 42 views
0

我们有一个当前正在使用basicHttpBinding的服务。我们可以灵活地将其转换为netTCPBinding。在IIS 7中部署它时,我们将身份验证用作匿名。该服务由同一网络中的IIS中托管的网站访问。WCF安全 - https和匿名身份验证

我们的客户提出了关于匿名身份验证的问题,他不希望不需要的用户(在办公室网络中)使用它。关键是人们可以创建自己的样本网站并使用该服务。

假设我使用运输凭证类型为“证书”,它是否符合我的要求?也就是说,只有拥有客户端证书的用户才能访问该服务?你能指引我解释如何暗示它的任何文章吗?

<endpoint address="" 
binding="basicHttpBinding" 

我已经提到了以下 http://msdn.microsoft.com/en-us/library/ms731092.aspx

注:在IIS消费网站使用Windows身份验证:启用,ASP.NET模拟:启用

感谢

回答

1

我的建议是转换为netTCP并使用证书认证。仅将证书与访问Web服务的网站共享。下面的链接将帮助您实现安全证书在WCF

http://www.codeproject.com/Articles/36683/9-simple-steps-to-enable-X-509-certificates-on-WCF

+0

所以你说的https证书符合要求,不是吗? – Lijo

+1

不,我建议带证书的netTCP作为你的消费者是一个.net网站。如果你使用https,我认为任何人都可以打该网址并下载证书。 –

+0

假设我使用传输证书类型作为“证书”,它是否符合我的要求?也就是说,只有拥有客户端证书的用户才能访问该服务? – Lijo

1

可以简单的解决方案是否使用Http Headers,并在客户端发出请求时在头中添加一些授权密钥。在服务器上检查授权密钥的请求标头。如果没有找到密钥,请对服务进行故障排除。检查this的帖子,它解释了如何在创建服务的代理时添加标题。

建议

您可以删除元数据端点(墨西哥),设置httpGetEnabledfalse,这样一来,没有人会能够创建服务的代理。

希望这可以帮助你。

+0

试图改变安全模式在配置运输。检查[this](http://msdn.microsoft.com/en-us/library/ms729700.aspx)。通过使用https来保护传输层。我想这应该适合你。 –

+0

也检查此[WCF绑定需要HTTPS](http://weblogs.asp.net/srkirkland/archive/2008/02/20/wcf-bindings-needed-for-https.aspx) –

+0

即使我们使传输层安全,在同一个网络中未完成的人可以使用它,对吧? – Lijo