【问题标题】:JSON Web Tokens & OAuthJSON Web 令牌和 OAuth
【发布时间】:2016-12-08 19:30:49
【问题描述】:

我刚开始学习身份验证和授权,我正在尝试了解 REST API 的 JWT 和 OAuth。

我一直在做一些研究,但仍有几点不清楚:

JWT

  • 令牌是否包含所有信息以验证请求是否安全?换句话说,在服务器上生成令牌时,我是否需要将其与用户名/ID 一起保存在数据库中,以验证对 API 进行的每个后续调用?
  • JWT over HTTP 是否足够安全,还是需要 HTTPS?

OAuth

  • 按照我的理解,我可以使用 OAuth 将授权委托给第三方应用程序(例如 Facebook)。如果身份验证成功,我会从身份验证调用中收到一个令牌。然后我可以使用这个令牌来传递对我的 API 的所有调用,因为令牌是由受信任的第 3 方应用程序 (Facebook) 发布的。我可以解码令牌,验证令牌是否安全有效,然后继续我需要在我的 API 中执行的任何操作。换句话说,我将身份验证完全外包,无需在某处存储用户名和密码。对吗?

【问题讨论】:

    标签: oauth oauth-2.0 jwt


    【解决方案1】:

    令牌是否包含所有信息以验证请求是否安全?

    hhhhh.ppppp.sssss 这样的 JWT 的第三部分是使用服务器私钥在令牌的 header 和 payload 上执行的数字签名。任何对标头、有效负载或签名的更改都会被服务器检测到并拒绝令牌

    换句话说,当在服务器上生成令牌时,我是否需要将其与用户名/ID 一起保存在数据库中,以验证对 API 进行的每个后续调用?

    不,因为数字签名保护内容。您可以放心地信任令牌中的任何数据

    JWT over HTTP 是否足够安全,还是需要 HTTPS?

    JWT 可能包含隐私敏感信息,并且为防止将此类信息泄露给非预期方,应仅通过加密通道 (https) 传输。如果需要防止向客户端泄露某些信息,则应加密 JWT。

    [OAuth] 换句话说,我将身份验证完全外包,无需在某处存储用户名和密码。对吗?

    是的,你是对的,OAuth 允许用户在不暴露其凭据的情况下授权第三方应用程序

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 2019-09-28
      • 2016-03-23
      • 2021-03-12
      • 2016-09-05
      • 2014-08-10
      • 2017-11-20
      • 2014-04-24
      相关资源
      最近更新 更多