我正在努力通过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中传递给客户端吗?
答案 0 :(得分:0)
Stormpath API的结果确实提供了token_type
属性,定义为Bearer
,因为它是OAuth端点的预期默认值。我们的想法是通知客户端如何使用令牌来验证未来的请求,默认策略是作为HTTP头Authorization: Bearer <token>
,其中<token>
是您从{{1}获得的压缩令牌字符串}}
但是在您的情况下,您将把它存储在Cookie中,浏览器会将其发送回getAccessTokenString()
标题,简单明了:)所以不需要客户端了解有关令牌的其他信息。但是,您应该将cookie的到期时间设置为与令牌的到期时间相同,以便浏览器在令牌不再有效时自动清除令牌。
你也做了正确的事情,让它成为一个安全的,仅限http的cookie,不会被恶意JavaScript窃取,所以这种方法对我来说非常好。