我目前正在使用 2.0 实施 OAuth 身份验证 3 腿策略。我遇到了一个问题:
使用 Oauth 登录时记住客户端会话的最佳方式是什么?
目前我正在做的是在客户端上设置一个与我在服务器上的会话 ID 匹配的 cookie。这当然等同于普通的基于 cookie 会话的登录。然后在会话中,我会跟踪使用 Auth Code 时获得的访问令牌并将其交换为访问令牌。
如您所见,客户端和服务器之间的状态通过 cookie/会话 id 保持同步,访问令牌仅保存在服务器中并与会话 id 相关。
但是我读到这是不安全的,并且 OAuth 应该是无状态(restful)风格,所以不应该需要 cookie,特别是如果客户端是机器客户端而不是浏览器客户端。一些资源提到客户端应该存储所有必要的凭据,以便对应用程序的任何请求进行身份验证。这是否意味着我应该将访问令牌存储在浏览器的标头中?来自重定向的身份验证代码呢,是否也应该存储在浏览器的标题中?(并且这些代码/令牌是否应该在浏览器的标头上加密/签名)(您将如何使用 PHP 来做到这一点?)
像这样的资源:http://sitr.us/2011/08/26/cookies-are-bad-for-you.html说客户端丰富的 javascript 应用程序可以跟踪访问令牌并将其传递给每个 XHR要求?但当然不是每个客户端都是 javascript 应用程序,例如机器客户端。