MVC RESTful服务授权

时间:2011-03-03 01:13:33

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

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

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

我已经调查了oAuth并且我想要使用它,但是,有人告诉我,从我的上级来看,这种方法对于连接到我们服务并希望我找到另一个服务的客户的“级别”来说太复杂了他们连接的简单方法,但仍然有授权。我们的大多数客户都没有基本的编程知识(我们帮助他们建立连接或者他们聘请了一些孩子为他们做这件事)。这是上司想要一种不同方法的另一个原因,因为我们不能让所有500多个(每天加上5-10个新客户)请求如何实施oAuth。

那么,除了传递预设的GUID之外,还有另一种保护MVC3服务的方法吗?

我已经考虑过在服务网站上使用Windows身份验证,但对于500多个客户来说这是否合乎逻辑?

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

感谢。

2 个答案:

答案 0 :(得分:4)

如果您不想要任何过于复杂的内容,请查看Basic HTTP Authentication。如果您通过SSL使用它,那么它应该足够安全并且也足够容易为您的客户实施。直到几个月前他们切换到OAuth时,Twitter API才实际使用了它。

答案 1 :(得分:0)

您想要区分身份验证和授权。您正在寻找的是身份验证,实际上Caps建议,最简单的方法可能是使用HTTP BASIC身份验证和SSL,以使密码不受损害。

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

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

OAuth无法真正解决您的问题,因为OAuth是授权授权,即我让Twitter代表我写入我的Facebook帐户。

HTH