2009-11-04 52 views
40

另一分钟我阅读了关于OAuth的文章。它特别描述了在一系列请求期间客户端和服务提供商之间交换的令牌。REST中的OAuth令牌和会话

文章还提到,OAuth的收益显著普及RESTful API中的授权层。据我了解,REST应该保持完全无状态。

的问题:难道这不是重复令牌交换,鱼雷REST的“无状态”的原则?恕我直言,令牌可以被看作是一种会话ID,不是吗?

回答

76

的OAuth令牌是明确的会话标识,互动是不是因为要求必须以特定的顺序来进行OAuth令牌协商协议的请求之间的无状态的,他们确实需要每个客户端存储在服务器上,因为你需要跟踪他们发布时的情况。所以是的,OAuth确实违反了RESTful架构的严格原则。

不幸的是,真实世界TM与我们需要做的事情相抵触,比如允许应用程序代表个人进行身份验证而不要求他们的密码,而OAuth相当不错。没有这种状态就不可能实现类似的安全认证方案。事实上,OAuth(1.0a)所要求的变化之一是将更多状态添加到令牌协商协议以减轻安全风险。

所以,它鱼雷REST的无状态的原理是什么?是。这很重要吗?除非你生活在象牙塔:-)

+11

我喜欢Real World(TM)。感谢你的回答! – Boldewyn

+6

+1为使现实世界为REST –

+4

一旦OAuth认证已被处理,但是,它可以有效地无状态 - OAuth令牌是由客户端存储,并在授权标题中的每个REST请求一起发送。 –

6

认证是在网络交互处理时必须以某种方式跟踪的状态。最终,如果你的应用程序是宁静的,服务器必须能够跟踪每个用户的“身份验证状态”,不幸的是,这需要某种规避HTTP的底层无状态性质和任何额外的传输/技术(如REST)它。

因此,开发任何类型的身份验证的应用程序的,国家的原则必须鞋企有角的地方,如果这恰巧是在REST的顶部OAuth的,那是注定的!