我正在开发一个ASP.NET Web应用程序,它将访问托管在同一IIS中的WCF服务,其中将托管ASP.NET站点以与数据层进行通信。
ASP.NET站点通过根据存储在sql数据库中的用户名和密码对用户进行身份验证来处理表单身份验证。
由于WCF服务托管在互联网上,我希望防止未经授权访问WCF服务,即只允许ASP.NET站点成功通过身份验证的用户访问WCF服务。
如果未经授权的用户直接访问WCF服务,如http://test.com/service/userservice.svc或尝试添加服务引用,则应该抛出异常。
如何实现这一目标?
答案 0 :(得分:0)
在生产中,您可能希望完全关闭元数据交换(除非您的aspnet代码在运行中生成代理,我认为它不会)。
您可以通过服务中web.cong / app.config中的以下设置关闭元数据曝光 - 1。 2.删除元数据端点
回到第二个问题 - 这取决于您在WCF服务中使用的绑定。如果您没有暴露或打算将您的服务暴露给外部世界,那么通常首选net TCP绑定是因为它的性能(您可以在IIS 7+中托管基于tcp的服务)。
考虑到它是基于TCP的服务,您的端点不会以任何方式暴露在端口80上,因此任何客户端都无法直接调用您的服务(假设您公司的防火墙仅允许该IP上的端口80)。您可以通过向其添加Windows身份验证来进一步加强服务的安全性。
我在这里做了一些假设,所以请随意回复。
HTH