2011-06-22 38 views
0

我正在寻找解决方案,目前尚未成功:我正在计划一个RESTful Web服务,其中某些操作(例如DELETE)需要特殊的身份验证。带有额外验证的HTTP DELETE请求

这个想法是,用户有一个正常的用户名/密码登录(基于会话或基本身份验证,这里并不重要),使用它们可以访问该服务。某些操作需要以PIN码或甚至一次性密码的形式进行额外的身份验证。在登录过程中加入额外的认证是不可能的(并且会错过整个练习的重点)。

我想过特殊的头文件(类似于X-OTP-Authetication),但是这将使得通过标准HTML页面访问服务变得不可能(无法将自定义头文件包含到链接中)。 另一种选择是HTTP查询参数,但似乎不鼓励,特别是对于DELETE。

任何想法如何解决这个问题?

+1

您是否考虑过[OAuth](http://oauth.net/documentation/getting-started/)?它包含一些扩展的认证和支持已知的提供商,如Facebook,谷歌和微软。 –

回答

1

REST Web Service Security with jQuery Front-End

如果您还没有准备好,我建议你在OAuth 1.02.0一些阅读。它们都被更大的API使用,比如Facebook,Netflix,Twitter等等。 2.0仍在草案中,但这并没有阻止任何人实施它并使用它,因为它对于客户来说更简单。这听起来像你想要更复杂和更安全的东西,所以你可能要专注于1.0。

我总是发现Netflix的Authentication Overview是客户的一个很好的解释。

+0

当我获得OAuth时,这是为3方设置而设计的,用户希望某个网站在不透露密码的情况下访问他在Web服务上的数据。我正在寻找的是不同的。用户身份验证完全在我的控制之下,只是某些操作需要额外的标识(例如由硬件令牌生成的一次性密码)。无论如何,感谢您的提示,我会仔细研究OAuth,也许我错过了一些东西。 – Michael

+0

够公平的。对于内部服务来说可能有点矫枉过正,但它可以这样使用(我们的移动应用程序使用它来使用我们的公共API进行身份验证)。我对2.0最为熟悉,但它运行的是具有范围的令牌(如会话密钥)。你可以做一个类似的模式,因此一些DELETE需要一个范围,而更多的受保护的DELETE可以采用不同的范围,这个范围必须由客户端应用程序单独请求。 –