当前位置:  开发笔记 > 运维 > 正文

REST中的OAuth令牌和会话

如何解决《REST中的OAuth令牌和会话》经验,为你挑选了2个好方法。

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

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

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



1> Greg Beech..:

OAuth令牌明确是会话标识符,OAuth令牌协商协议中的请求之间的交互不是无状态的,因为请求必须按特定顺序执行,并且它们确实需要服务器上的每个客户端存储,因为您需要跟踪事件,例如何时他们被发行了.所以,是的,OAuth确实违反了RESTful架构的严格原则.

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

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


我喜欢Real World(TM).谢谢你的回答!
但是,一旦处理了OAuth身份验证,就可以实现无状态 - OAuth令牌由客户端存储,并与Authorization标头中的每个REST请求一起发送.
@Jordan:OAuth令牌保存在服务器上以避免重新验证,因此状态将保存在客户端和服务器上.所以它是有状态的.格雷格把它总结得相当不错.

2> 小智..:

身份验证是在处理Web交互时必须以某种方式跟踪的状态.最后,如果您的应用程序是宁静与否,服务器必须能够跟踪每个用户的"认证状态",不幸的是,需要某种之上的HTTP的基本无状态特性以及任何额外的运输/技术(如REST)规避它.

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

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有