Security 与OAuth 2一起使用Json Web令牌

Security 与OAuth 2一起使用Json Web令牌,security,oauth-2.0,Security,Oauth 2.0,我正在尝试用OAuth 2构建一个授权和身份验证系统,我对不同字符串的生成有一些疑问 client\u id:为了生成client\u id,我使用来自mongoDB,它的形式如下:507f77bcf86cd799439011 client\u secret:我使用NodeJS模块创建的随机生成的字符串(48个字符) access\u-token:目前,我使用JWT-token,因为我喜欢这样的原则:能够通过该令牌保存信息,并且能够在每次请求时访问资源,而无需查询身份验证服务器(无状态体系结构

我正在尝试用OAuth 2构建一个授权和身份验证系统,我对不同字符串的生成有一些疑问

  • client\u id
    :为了生成
    client\u id
    ,我使用来自
    mongoDB
    ,它的形式如下:
    507f77bcf86cd799439011
  • client\u secret
    :我使用NodeJS模块创建的随机生成的字符串(48个字符)
  • access\u-token
    :目前,我使用JWT-token,因为我喜欢这样的原则:能够通过该令牌保存信息,并且能够在每次请求时访问资源,而无需查询身份验证服务器(无状态体系结构)
  • refresh\u token
    :我还想为这种令牌使用JWT

问题是:在OAuth 2中使用JWT令牌是一种不好的做法吗?如果这是一种不好的做法,为什么?我的
客户端id
客户端机密生成是否有问题?

使用JWT作为令牌是可以的(例如Microsoft Azure使用JWT形式的令牌),只有一件事需要注意。如果决定实现,则必须将令牌的生存期设置为较短的时间(以便在被撤销后不会使用太长时间),或者在OAuth2服务器上检查其有效性


对于
client\u id
,如果
ObjectId
是MongoDb中的记录标识符,我将使用非DB生成的值。对于生成的值,如果您需要将自定义值用作
客户端id
,则可能会遇到问题。这不是一个有力的论点,但我认为值得考虑。

谢谢你的回答。关于撤销,我计划用1h令牌、24h刷新令牌和在每个资源服务器上复制的访问令牌标识符黑名单来处理这个问题。我还计划在客户id级别建立一个黑名单。