【问题标题】:Approaches for requiring forms authenticated users when calling a WCF restful service?调用 WCF RESTful 服务时要求表单经过身份验证的用户的方法?
【发布时间】:2012-06-01 14:22:28
【问题描述】:

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

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

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

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

每次我阅读有关 WCF 身份验证的内容时,似乎都不可避免地会进入有关 WS-security 和 X509 证书的讨论,而且我不知道我在做什么需要所有这些?我真正想要构建的是一系列仅响应表单身份验证用户的 WCF 宁静服务。如果不深入研究 WS-Security 和 X509 就无法做到这一点,那么就这样吧,但我希望尽可能简单。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 在这种情况下使用 Web API 究竟有什么帮助?
    • 在 Web API 应用程序中,根据传入的表单身份验证 cookie 做出身份验证/授权决策要容易得多。
    • 事实证明,在 WCF 中使用表单身份验证比我想象的要容易。从来没有必要这样做。 another post
    • 谢谢 0leg。这些 WCF 服务将是面向公众的(在浏览器中使用 Ajax/javascript 调用),因此可以由第三方调用,如果他们知道在哪里查找的话。这就是为什么我想保护它们,以便只有经过表单身份验证的客户端才能调用它们。感谢您提供上面的链接。
    【解决方案2】:

    让您的 javascript 从后面的代码生成。如果 Page.User.IsAuthenticated,则呈现 ajax 脚本。如果不是,则呈现 javascript 以提醒用户他们需要登录。如果您不希望用户从浏览器源中删除 javascript 并稍后运行它,当他们未通过身份验证时,您将需要生成一个基于会话 ID 的令牌,可以在站点和服务之间传递。

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 1970-01-01
      • 2011-02-23
      • 2011-03-03
      • 2011-11-11
      • 2018-03-28
      • 2011-08-03
      • 2011-11-27
      • 2010-10-03
      相关资源
      最近更新 更多