REST中的OAuth令牌和会话

时间:2009-11-04 09:07:32

标签: session rest oauth stateless

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

该文章还提到OAuth在RESTful API中作为授权层获得了极大的普及。据我所知,REST应该完全无状态。

问题:这种重复的令牌交换不会破坏REST的“无国籍”原则吗?恕我直言,令牌可以看作是一种会话ID,不是吗?

2 个答案:

答案 0 :(得分:76)

OAuth令牌显式是会话标识符,OAuth令牌协商协议中的请求之间的交互不是无状态的,因为请求必须按特定顺序执行,并且它们确实需要在服务器上按需客户端存储发布时的事情。所以,是的,OAuth确实违反了RESTful架构的严格原则。

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

那么,它是否破坏了REST的无状态原则?是。那有关系吗?除非你住在象牙塔里,否则不会: - )

答案 1 :(得分:6)

身份验证是在处理Web交互时必须以某种方式跟踪的状态。最终,如果您的应用程序是否安静,服务器必须能够跟踪每个用户“身份验证状态”,不幸的是,这需要某种规避HTTP的基本无状态性质以及任何其他传输/技术(如REST)。它。

因此,要开发任何类型的经过身份验证的应用程序,状态原则必须在某个地方发挥作用,如果在REST之上碰巧是OAuth,那就必须如此!