Node.js 在使用node-oauth2-server npm包时,当grant_类型为refresh_令牌时,不应创建新的refresh_令牌
我试图使用Postgres数据库为我的节点应用程序实现Oauth2框架。我遇到了一个名为的节点npm包,它提供了内置的现成的Oauth2框架 我还从Node.js 在使用node-oauth2-server npm包时,当grant_类型为refresh_令牌时,不应创建新的refresh_令牌,node.js,postgresql,oauth-2.0,Node.js,Postgresql,Oauth 2.0,我试图使用Postgres数据库为我的节点应用程序实现Oauth2框架。我遇到了一个名为的节点npm包,它提供了内置的现成的Oauth2框架 我还从IETF中阅读了这篇文章,其中详细描述了OAuth2框架。根据文档,只要access\u令牌无效,我们就可以重新生成一个新的access\u令牌,并将refresh\u令牌传递给authorization服务器。文档说明新的访问\u令牌不需要有新的刷新\u令牌 我的要求是,每当我使用grant\u type作为refresh\u令牌,我只需要生成一个
IETF
中阅读了这篇文章,其中详细描述了OAuth2框架。根据文档,只要access\u令牌
无效,我们就可以重新生成一个新的access\u令牌
,并将refresh\u令牌
传递给authorization
服务器。文档说明新的访问\u令牌
不需要有新的刷新\u令牌
我的要求是,每当我使用grant\u type
作为refresh\u令牌
,我只需要生成一个新的access\u令牌
。在使用npm包时,我可以看到每当授予类型为refresh\u-token
时,它都会生成一个新的refresh\u-token
有人能帮助我如何确保在使用npm包的grant\u type
为refresh\u token
时只生成access\u token
在npm包中重新生成刷新令牌的代码如下
function generateRefreshToken (done) {
if (this.config.grants.indexOf('refresh_token') === -1) return done();
var self = this;
token(this, 'refreshToken', function (err, token) {
self.refreshToken = token;
done(err);
});
}
我也浏览了github和stackoverflow上的这些链接,但找不到答案
请检查DB中的refresh_令牌的expires值,因为它可能已经过期,所以lib正在重新生成它。我检查了DB中refresh_令牌的expire值,但它尚未过期。尽管如此,每当授予类型为refresh\u token时,它仍会生成其他点,refresh token expire不应小于access token expire,否则将无效,我有两个假设,第一个假设是lib将比较refresh和access token的过期日期,或者每次创建新的访问令牌时生成第二个刷新令牌,为了避免刷新令牌在访问令牌之前过期的情况,请检查刷新令牌是否过期为null,它应该表示不朽的刷新令牌。根据文档,默认的accessTokenLifetime为3600,refreshTokenLifetime为1209600。那么第一个条件就不存在了。其次我可以将名为refreshTokenLifetime的参数传递为null,以提供不朽的refreshToken,但它仍然会在授予类型上创建一个新的refreshToken作为refreshToken。那么这可能是一个bug吗?您在GitHub上提到过这个问题吗?请检查refreshToken在DB中的expires值,因为它可能已经过期,所以lib正在生成它再次,我检查了数据库中refresh_令牌的expire值,它还没有过期。尽管如此,每当授予类型为refresh\u token时,它仍会生成其他点,refresh token expire不应小于access token expire,否则将无效,我有两个假设,第一个假设是lib将比较refresh和access token的过期日期,或者每次创建新的访问令牌时生成第二个刷新令牌,为了避免刷新令牌在访问令牌之前过期的情况,请检查刷新令牌是否过期为null,它应该表示不朽的刷新令牌。根据文档,默认的accessTokenLifetime为3600,refreshTokenLifetime为1209600。那么第一个条件就不存在了。其次,我可以将名为refreshTokenLifetime的参数作为null传递给我不朽的refreshToken,但它仍然会在授予类型上创建一个新的refresh_令牌作为refresh_令牌。那么这可能是一个bug,您在GitHub上提到过这个问题吗?