【发布时间】:2015-02-06 09:55:46
【问题描述】:
在 OAuth 2.0 授权代码流中协调浏览器/用户代理会话与客户端的标准最佳实践方法是什么?
在 OAuth 2.0 授权代码流程中,客户端(您正在使用的 Web 应用程序)直接从授权服务器获取访问令牌。访问令牌永远不会暴露给浏览器/用户代理,这是代码流的重要优势之一。客户端安全性保留访问令牌(和刷新令牌,如果提供),以便它可以将其重用于来自用户的后续请求(通过浏览器/用户代理)。
这就引出了一个问题:客户端和浏览器/用户代理如何传达用户的会话,以便客户端“知道”代表用户使用哪个访问令牌,并且可以这样做?
我找到了客户端为浏览器/用户代理创建会话 cookie 的示例代码。这行得通,但似乎重新打开了基于 cookie 的漏洞利用的大门。有一些标准方法可以防止它们,但我认为 OAuth 2.0 的一个好处是完全避免了这些攻击。 (此外,我们托管了一个 Web REST API,因此没有要发布的表单,我希望保持 API 接口干净、简单并基于标准安全方法。)
注意事项:
OAuth's tokens and sessions in REST 实际上并没有回答这个特定的问题,尽管我也喜欢 Greg Beech 的回答。
问题Understanding OAuth and client sessions 有类似的意图,但答案不适用于我们的案例。
这个问题是关于来自用户代理的后续请求,而不是关于回调处理程序。
我们完全期望并打算我们的 REST 请求不会是无状态的,并且客户端将维护用户会话的状态信息。出于很好的理由,我宁愿不 枚举这里,我们不是在做一个无状态的 REST 接口。
【问题讨论】:
标签: rest session cookies oauth-2.0