RESTful浏览器用户代理和身份验证

时间:2011-04-13 21:31:26

标签: rest browser restful-authentication user-agent

我已经看到很多关于restful-authentication的问题,但我想知道在对RESTful Web服务进行身份验证时,浏览器用户代理使用什么策略是无状态的。

使用自定义REST客户端执行此操作非常简单:我们可以使用Basic Auth,Digest,OAuth或自行滚动(自定义标头,令牌,签名等)。因此,对于机器到机器,我们几乎被覆盖,但我只对使用日常浏览器用户代理(IE,Firefox等)的身份验证感兴趣。例如JSON已经出局,因为浏览器无法呈现/使用它;)

以下是我对浏览器限制的一些看法:

  • AFAICS浏览器无法发送自定义标头,例如OAuth使用的标头? (右?)
  • 我觉得应该能够有一个用户登录的登录页面(例如html + ssl)。 (无基本身份验证)然后,浏览器会捕获一个令牌,并在每次请求时将其传回服务器。我对Basic Auth的问题是我没有“很好的自定义登录页面”。当前的身份验证机制是否可以扩展,我们可以保持它的安静吗?
  • 由于存在失去可扩展性优势的风险,我在打破/放宽REST约束时非常谨慎。

A similar answer here但我有针对Cookie的特殊情况 :(没有详细说明):浏览器目前使用Cookie的方式是不可能的,因为服务器是控制cookie。 (服务器端状态的“Set-Cookie”标头)。客户不理解或解释它所喂食的cookie的内容,只是将其返回。问题是客户端无法控制cookie。因此,是的,我们可以在“自定义/机器到机器客户端”中以一种宁静的方式使用cookie,但这不是浏览器实现它的方式。

您一直在使用哪些策略和最佳做法以及您的经历是什么?还有其他意见吗?

2 个答案:

答案 0 :(得分:1)

我认为您提到的浏览器限制对于大多数用例而言基本上是不可克服的。我们的个性化解决方案是向用户提供一个包含自定义REST客户端的轻量级非RESTful层;例如,对于JavaScript应用程序,我们通过JSON-RPC公开服务器端REST客户端。

答案 1 :(得分:1)

如果您使用的是apache Web服务器,可能需要查看this document