【问题标题】:MVC RESTful Service AuthorizationMVC RESTful 服务授权
【发布时间】:2011-07-07 17:25:19
【问题描述】:

我正在为我的公司重新编写一些非常过时的 .NET 2.0 SOAP Web 服务。所以我正在使用 MVC3 RESTful 重写它们。这种方法将简化我们的客户群(超过 500 个使用我们当前的 SOAP 服务的客户)对我们的服务的使用,这些客户群使用多种平台和语言。

我正在寻找一种更好的 RESTful 服务授权方法,而不是以前的开发人员用于我们的 .NET 2.0 SOAP Web 服务的方法(他基本上只是让客户端传入一个 GUID 作为参数并在代码中匹配它后面)。

我研究了 oAuth,我想使用它,但是,我的上级告诉我,这种方法对于连接到我们服务并希望我找到另一个“级别”的客户来说太复杂了更简单的连接方式,但仍然具有授权。我们的大多数客户都具有 BASIC 编程知识(我们帮助他们进行连接设置,或者他们聘请了一些孩子为他们做这件事)。这是上级想要不同方法的另一个原因,因为我们不能让所有 500 多个(加上每天 5-10 个新客户)就如何实施 oAuth 寻求帮助。

那么,除了传递预设的 GUID 之外,还有其他方法可以保护 MVC3 服务吗?

我已经研究过在服务站点上使用 Windows 身份验证,但这对于 500 多个客户端使用真的合乎逻辑吗?

是否有一种简单且安全的方法可以授权多个平台上的多个用户使用终端客户端可以轻松实现的 MVC3 RESTful 服务?

谢谢。

【问题讨论】:

    标签: asp.net-mvc windows rest oauth authorization


    【解决方案1】:

    您想区分身份验证和授权。您正在寻找的是身份验证,实际上正如Caps 所建议的那样,最简单的方法可能是使用 HTTP BASIC 身份验证和 SSL 以使密码不被泄露。

    您可以查看其他身份验证方式,例如使用 ADFS 或 SAML 进行 DIGEST 或更高级(ADFS 可能很有吸引力,因为您使用的是 .NET)。也看看 OpenID Connect - 它得到了 Google 的大力支持,并且得到了很大的支持。

    完成此操作后,您可能需要考虑授权(如果您需要授权)来控制给定客户端可以对给定资源/项目/记录执行的操作。为此,您可以使用 .NET 框架中提供的基于声明的授权,或者如果您需要更细粒度的授权,请查看 XACML。

    OAuth 并不能真正解决您的问题,因为 OAuth 是关于授权委托,即我让 Twitter 代表我写信给我的 Facebook 帐户。

    HTH

    【讨论】:

      【解决方案2】:

      如果您不想太复杂,请查看Basic HTTP Authentication。如果您通过 SSL 使用它,那么它应该足够安全,并且对于您的客户来说也足够容易实现。 Twitter API 直到几个月前才切换到 OAuth 时才真正使用它。

      【讨论】:

      • 感谢您的建议。我会调查一下。你不会碰巧有一些网站谈论如何使用 MVC2/3 实现一个好的基本身份验证模型?我会用谷歌搜索我能做的,但问起来永远不会有坏处。 :)
      • 这是一篇关于在 MVC 中使用基本身份验证的好文章 stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi
      猜你喜欢
      • 2012-09-18
      • 1970-01-01
      • 2014-06-24
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多