如何保护WCF服务

时间:2013-07-01 09:53:16

标签: asp.net-mvc wcf security

我在IIS中托管了WCF服务。我在asp.net mvc中托管了另一个网站。这是一个公共网站。我希望保护我的WCF服务,以便不能从我的MVC应用程序以外的任何应用程序访问它,或者我可以访问它。

我可以使用表单身份验证吗?

更新

我经历了几个例子,但我无法得到有效的例子。我不想使用ssl。我的网络应用程序中没有登录功能。如果需要,可以实现programitic登录。我需要的是,如果没有从我的网站调用该服务,则拒绝访问。我在使用表单身份验证的Web服务中完成了此操作。但是在这里,httpcontext为null。

1 个答案:

答案 0 :(得分:0)

是的,你可以。 WCF调用通过相同的管道,因此如果您检查特定的主体(用户名或角色),您的检查将失败/成功,具体取决于Forms cookie。

我博客条目中的更多详情

http://netpl.blogspot.com/2010/04/aspnet-forms-authentication-sharing-for.html

我将展示如何在Web应用程序和托管的Silverlight应用程序之间共享表单标识,该应用程序调用WCF服务。

对于另一种类型的客户端应用程序,您在客户端获取cookie值的方式可能会有所不同。 Silverlight只是从运行它的Web应用程序继承cookie。

假设您的客户端是一个控制台应用程序,您甚至可以从WCF服务中公开一个无人看守的方法,该方法接受loginname + password并将cookie返回给客户端。这样,控制台应用程序将首先调用此无保护方法来登录用户,然后使用返回的cookie调用其他WCF服务,并使用表单身份验证。