【问题标题】:Does the client call back the server with the same JWT token it received?客户端是否使用接收到的相同 JWT 令牌回调服务器?
【发布时间】:2020-07-27 20:13:59
【问题描述】:

我是 JWT 的新手,因此尝试了解使用 JWT 时的复杂性和期望。就我而言,我拥有生成 JWT 令牌的微服务。 JWT 支持 RS256 和 HS256 机制。据我了解,在 RS256 的情况下,我将公钥分发给我的客户。对于 HS256,我将密钥分发给我的客户。

假设我将其中任何一个的访问权限授予我的客户,客户的期望是什么?客户是否应该将我传回给他们的令牌视为不可变的,而他们只是在随后的 API 调用中将确切的令牌发回给我?或者是否建议/可以让他们改变令牌并创建一个新令牌,例如通过更改令牌有效负载中的受众等内容,然后让我的服务器验证新传递的令牌?我的服务器应该能够验证这两个令牌,但我不知道哪个是推荐的方法。如果推荐的方法是让我的客户不改变令牌,为什么我首先需要将密钥分发给客户?

【问题讨论】:

    标签: security authentication jwt


    【解决方案1】:

    不要将密钥分发给客户端。客户端应该无法修改 JWT 访问令牌。它应该将令牌视为不透明的。

    只有接受令牌的资源服务器(暴露 API)才能验证签名。

    在 OAuth2 中,客户端是获取访问令牌并使用它调用 API 服务器的应用程序。只要它可以调用 API,它就不应该关心令牌。

    授权服务器对用户进行身份验证,获得用户的同意并将令牌颁发给客户端。

    然后客户端使用令牌调用资源服务器 (API),令牌在 Authorization 标头中。

    在您的情况下,授权服务器和资源服务器可能相同,但它们不应与客户端共享签名密钥。

    【讨论】:

    • 非常感谢。这是有道理的!
    猜你喜欢
    • 2021-07-21
    • 2015-11-01
    • 2017-04-30
    • 2020-04-30
    • 2020-03-06
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多