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,所以这种方法对我来说很不错。
我正在努力通过 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,所以这种方法对我来说很不错。