在调用WCF restful服务时要求表单经过身份验证的用户的方法?

时间:2012-05-26 05:51:01

标签: asp.net wcf security rest forms-authentication

想知道如何高效,安全地执行以下操作,并且不会让我们因为过度复杂而撕掉我们的头发:我们有一个ASP.Net站点,它使用表单身份验证并希望实现一些WCF可以从第一个站点调用的restful Web服务,前提是用户调用它们已经过身份验证。

我们希望在ASP.Net站点的不同网站上托管WCF RESTful服务。两个站点都在同一个域中(例如my-domain.com)。

我一直在阅读WCF中的各种绑定,并且不确定webHttpBindings是否适合这里(它们是最友好的REST,但它们是否可以容纳经过身份验证的用户?)

我正在寻找与代码一样多的建议和参考,但我很想知道从哪里开始,寻找什么,有什么可能,什么不可以。

每次我阅读有关WCF身份验证的内容时,似乎都不可避免地陷入关于WS-security和X509证书的讨论中,而且我不知道我需要所有这些来做我正在做的事情?我真正想要构建的是一系列WCF restful服务,它只响应经过身份验证的用户。如果没有深入研究WS-Security和X509那是不可能的,那么就这样吧,但我希望尽可能简单。

注意:大约一个月前我问过一些similar question,但已经决定使用表单身份验证。

2 个答案:

答案 0 :(得分:0)

如果您没有从浏览器调用WCF服务,那么您甚至不需要保护它们。只需将它们从您的ASPX代码调用到托管WCF的非公共站点即可。或者在服务器到服务器模式下使用X509证书。

如果您打算从浏览器中调用它们,那么事情会变得更加复杂。在这种情况下,您可能希望抛弃WCF并查看MVC 4 beta版中包含的Web API来构建您的REST服务。

http://www.asp.net/web-api

答案 1 :(得分:0)

从后面的代码中生成javascript。如果Page.User.IsAuthenticated,则渲染ajax脚本。如果没有,请渲染javascript,提醒用户他们需要登录。如果您不希望用户将javascript从浏览器源中删除并在以后运行它,那么当他们未经过身份验证时,您将需要根据会话ID生成令牌,该令牌可以在站点和服务之间传递。

相关问题