cookie 上的 Stormpath OAuth 访问令牌

Stormpath OAuth access token on cookie

我正在努力通过 Stormpath 将 OAuth 2.0 令牌管理集成到我的应用程序中。目前我通过像这样构建 cookie 将访问令牌存储在 cookie 中:

public Cookie buildAuthCookie(OauthGrantAuthenticationResult ogar){
    Cookie authCookie = new Cookie("authCookie", ogar.getAccessTokenString());
    authCookie.setSecure(true);
    authCookie.setHttpOnly(true);
    return authCookie;
}

并将其附加到我的回复中,如下所示:

response.addCookie(buildAuthCookie(ogar));

我唯一需要附加到来自 OAuthGrantAuthenticationResult 的 cookie 的访问令牌,还是我需要添加其他东西?我一直在阅读的文档 (http://docs.stormpath.com/guides/token-management/) 似乎让客户端也传递令牌类型,但我需要在 cookie 中传递给客户端吗?

Stormpath API 的结果确实提供了 token_type 属性,定义为 Bearer,因为这是 OAuth 端点的预期默认值。这个想法是通知客户端应该如何使用令牌来验证未来的请求,默认策略是作为 HTTP header Authorization: Bearer <token>,其中 <token> 是您获得的紧凑令牌字符串来自 getAccessTokenString()

但在您的情况下,您将把它存储在 cookie 中,浏览器将在 Cookie header 中将其发回,简单明了 :) 所以不需要客户了解有关令牌的更多信息。但是你应该设置cookie的过期时间和token的过期时间一样,这样浏览器会在token失效的时候自动清除。

你也做了正确的事情,使它成为一个安全的、仅限 http 的 cookie,不会被恶意窃取 JavaScript,所以这种方法对我来说很不错。