我正在实现一个OAuth2.0服务器,并尝试阅读刷新令牌的概念,以及如何使用它来调用访问令牌,以及如何安全地存储它。有一件事让我感到困惑,那就是"由于Auth2.0令牌是短期令牌,假设在成功登录后服务器给我一个像这样的令牌:"
现在可以使用存储在浏览器cookie中的新
{
"token_type":"bearer",
"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiVlx1MDAxNcKbwoNUwoonbFPCu8KhwrYiLCJpYXQiOjE0NDQyNjI1NDMsImV4cCI6MTQ0NDI2MjU2M30.MldruS1PvZaRZIJR4legQaauQ3_DYKxxP2rFnD37Ip4",
"expires_in":3600,
"refresh_token":"fdb8fdbecf1d03ce5e6125c067733c0d51de209c"
}
由于访问令牌是短期令牌,在我的情况下将在1小时后过期。
假设用户正在使用其访问令牌凭据浏览受保护的资源,在一段时间后,其访问令牌已过期,他的请求会返回以下响应:
{
"code":401,
"error":"invalid_token",
"error_description":"The access token provided has expired."
}
现在可以使用存储在浏览器cookie中的新
刷新令牌
生成新令牌,但是每当访问令牌在一个小时内过期时,客户端的有效请求会由于过期的访问令牌而被拒绝,这样用户体验不会受到影响吗?我们必须先获取新的访问令牌,然后再尝试该请求。
获取刷新令牌是否只能像这样工作,或者我错过了一些重要的概念?
此外,如何安全地将刷新令牌存储在cookie中,因为这也不是最好的安全存储方式?