我知道WCF要与会员提供商合作,您必须明确配置它:(例如http://www.codewrecks.com/blog/index.php/2009/09/08/use-aspnet-membership-provider-with-a-wcf-svc-service/)
但是,如果您已经有ASP.NET站点使用它,那么您是否可以通过执行以下操作来阻止对该服务的匿名访问?
<location path="PathToWCFService">
<system.web>
<authorization>
<deny users"?" />
<allow users="*" />
</authorization>
</system.web>
</location>
假设这有效,那么我猜WCF无法访问会员信息?为什么这可能是一个坏主意的任何其他原因?谢谢!
编辑:任何其他方式将WCF与不需要维护证书的成员资格提供程序一起使用?
答案 0 :(得分:1)
好的,我通常很乐意推迟到marc_s,但在这种情况下,我认为他的评论可能并不完全准确。
我认为他无视的是在ASP.NET中托管服务与自托管完全不同。
当您在ASP.NET网站中托管服务时,主机工厂由管理,并通过访问由ASP.NET提供的.svc端点来启动。< / p>
因此,虽然参与和访问服务的ASP.NET上下文是选择加入,但ASP.NET肯定会处理请求。
所以,是的,您可以在显示时使用ASP.NET授权保护任何.svc端点。
所以你要防范未经身份验证的访问。现在怎么办?如何验证客户端以便它可以访问您的服务?
这是您提供的使用会员/身份验证与服务的链接。
因此,在您的问题中,您正在描述使用成员资格提供程序堆栈保护ASP.NET托管的wcf服务的两个相互作用方面,但可能正在将它们视为/或。
现在,我可能会弄错,但这是我对它的理解以及我过去如何实现它。
祝你好运。是的,有一些方法可以保护一个不含证书的成员资格的服务,但它们通常对它们有点嗅觉和/或需要BasicHttp或WebHttp绑定。
如果您愿意,我很乐意与您探讨。