【问题标题】:Use of Json Web Tokens with OAuth 2在 OAuth 2 中使用 Json Web 令牌
【发布时间】:2018-02-26 20:50:39
【问题描述】:

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

  • client_id:为了生成client_id,我使用来自mongoDBObjectId,它是这种形式:507f1f77bcf86cd799439011
  • client_secret:我使用由 NodeJS 的 crypto 模块创建的随机生成的字符串(48 个字符)
  • access_token:目前,我使用 JWT Token,因为我喜欢能够通过该令牌保存信息的原理,并且能够在每次请求时无需查询身份验证服务器即可访问资源(无状态架构)。
  • refresh_token:我也想为这种令牌使用 JWT。

问题是:在 OAuth 2 中使用 JWT 令牌是一种不好的做法吗?如果这是一个不好的做法,为什么?他们对我的client_idclient_secret 一代有什么不好吗?

【问题讨论】:

    标签: security oauth-2.0


    【解决方案1】:

    使用 JWT 作为令牌是可以的(例如,Microsoft Azure 使用 JWT 形式的令牌),只有一件事需要注意。如果您决定实施revocation endpoint,则必须将令牌的生命周期设置为较短的时间(因此它们在被撤销后不会使用太久)或在 OAuth2 的introspection endpoint 处检查其有效性服务器。

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

    【讨论】:

    • 感谢您的回复。关于撤销,我计划使用 1h 令牌、24h 刷新令牌和在每个资源服务器上复制的 access_tokens 标识符黑名单来处理这个问题。我还打算在 client_id 级别上做一个黑名单。
    猜你喜欢
    • 2016-12-08
    • 2016-02-14
    • 2021-04-26
    • 2014-07-21
    • 2014-10-05
    • 2018-05-07
    • 2021-03-12
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多