【问题标题】:jwt - Django-rest-framework-jwt authentication in microsevicesjwt - 微服务中的 Django-rest-framework-jwt 身份验证
【发布时间】:2017-12-23 18:56:13
【问题描述】:

我是 JSON Web 令牌和微服务的新手。我在一篇文章中读到,如果我共享私有,所有服务都可以自行验证用户。然后我尝试实现一个应用程序来练习。 基本上,我有两个服务 A 和 B。A 用于身份验证。然后,我尝试在服务 B 中实现一个需要身份验证的 API。但是当我在 API 中使用身份验证 A 生成的令牌时,出现 401 状态代码和“无效签名”。被退回。 所以任何人都可以向我解释我做错了什么?

【问题讨论】:

  • “无效签名。”表示令牌已被更改或您正在使用错误的密钥进行验证。但是如果你不显示你生成和验证JWT的代码是不可能的
  • 只需获取一个令牌,然后尝试在另一个使用相同密钥的服务中将其与受保护的 api 一起使用

标签: jwt microservices


【解决方案1】:

“无效签名”表示您用于对令牌进行编码的密钥与您用于对其进行解码的密钥不匹配。

确保您用于编码和解码的密码相同。

欲了解更多信息,请访问JWT's site

【讨论】:

    【解决方案2】:

    首先,在非对称密钥对(如 RSA 或 ECDSA)的情况下,服务到服务的通信只需要共享公钥。共享的公钥可用于验证签名,每个服务都需要使用其私钥对 JWT 进行签名。您必须注意保护私钥并让其他服务可以访问公钥。

    验证用户是一个完全不同的用例。应该在数据库中检查用户是否存在,并且可以进行密码检查,这就是身份验证的全部内容。 JWT 可用于传递用户信息以及访问权限以及应用程序使用私钥完成的签名,这样没有人能够生成相同的令牌。注意:签名是使用私钥完成的。这样,您就可以使用 JWT 进行身份验证和授权。

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 2020-04-10
      • 2015-06-01
      • 2021-08-13
      • 2019-07-29
      • 2019-11-20
      • 1970-01-01
      • 2021-04-04
      • 2020-07-26
      相关资源
      最近更新 更多