从ASP.NET应用程序验证WCF服务

时间:2012-01-26 18:37:04

标签: asp.net wcf

我正在开发一个ASP.NET Web应用程序,它将访问托管在同一IIS中的WCF服务,其中将托管ASP.NET站点以与数据层进行通信。

ASP.NET站点通过根据存储在sql数据库中的用户名和密码对用户进行身份验证来处理表单身份验证。

由于WCF服务托管在互联网上,我希望防止未经授权访问WCF服务,即只允许ASP.NET站点成功通过身份验证的用户访问WCF服务。

如果未经授权的用户直接访问WCF服务,如http://test.com/service/userservice.svc或尝试添加服务引用,则应该抛出异常。

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

在生产中,您可能希望完全关闭元数据交换(除非您的aspnet代码在运行中生成代理,我认为它不会)。

您可以通过服务中web.cong / app.config中的以下设置关闭元数据曝光 - 1。 2.删除元数据端点

回到第二个问题 - 这取决于您在WCF服务中使用的绑定。如果您没有暴露或打算将您的服务暴露给外部世界,那么通常首选net TCP绑定是因为它的性能(您可以在IIS 7+中托管基于tcp的服务)。

考虑到它是基于TCP的服务,您的端点不会以任何方式暴露在端口80上,因此任何客户端都无法直接调用您的服务(假设您公司的防火墙仅允许该IP上的端口80)。您可以通过向其添加Windows身份验证来进一步加强服务的安全性。

我在这里做了一些假设,所以请随意回复。

HTH