2011-03-03 119 views
3

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

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

我已经看过oAuth,但是我想使用它,但是从我的上司那里得知,这种方法对于连接到我们服务的客户端的“级别”太复杂了,并且希望我找到另一种更简单的方式让他们连接,但仍有授权。我们的大多数客户都有BASIC,不懂编程(我们帮助他们获得连接设置,或者雇佣了一些小孩为他们做连接)。这是上级需要另一种方法的另一个原因,因为我们不能每天有500+(加上5-10位新客户)寻求如何实施oAuth的帮助。

那么,有没有另一种方法来保证MVC3服务,而不是传递预设的GUID?

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

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

谢谢。

回答

4

如果你不想要任何太复杂的东西,请看Basic HTTP Authentication。如果你通过SSL使用它,那么它应该足够安全并且很容易为你的客户实现。 Twitter API实际上使用了这个,直到几个月前他们切换到OAuth。

+0

感谢您的建议。我会研究这一点。你会不会发生一些网站,谈论如何使用MVC2/3实现一个良好的基本身份验证模型?我会尽我所能,但从不伤害问。 :) – Sean 2011-03-03 15:51:31

+0

这是一篇关于在MVC上使用基本认证的好文章http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/ – bigtv 2012-09-03 07:36:22

0

您想区分认证和授权。您正在寻找的是身份验证,事实上,如Caps所示,最简单的方法可能是使用HTTP BASIC身份验证以及SSL来使密码不受影响。

您可以查看其他认证方式,例如DIGEST或更高级的使用ADFS或SAML(ADFS可能会引人注目,因为你在.NET中)。看看OpenID Connect也是如此 - 它得到了Google的大力支持,并得到了很大的支持。

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

OAuth并不能真正解决您的问题,因为OAuth是关于授权的授权,即我让Twitter以我的名义写入我的Facebook帐户。

HTH