我在IIS中托管了WCF服务。我在asp.net mvc中托管了另一个网站。这是一个公共网站。我希望保护我的WCF服务,以便不能从我的MVC应用程序以外的任何应用程序访问它,或者我可以访问它。
我可以使用表单身份验证吗?
更新
我经历了几个例子,但我无法得到有效的例子。我不想使用ssl。我的网络应用程序中没有登录功能。如果需要,可以实现programitic登录。我需要的是,如果没有从我的网站调用该服务,则拒绝访问。我在使用表单身份验证的Web服务中完成了此操作。但是在这里,httpcontext为null。
答案 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服务,并使用表单身份验证。