【问题标题】:How to generate a JWT from Angular client?如何从 Angular 客户端生成 JWT?
【发布时间】:2017-05-10 15:01:57
【问题描述】:

我一直在寻找从 Angular 客户端创建 JWT 的官方方法。出于安全考虑,一些帖子建议不要这样做 问题,即使auth0/jwt-angular2 也没有生成它的功能。

【问题讨论】:

  • 这毫无意义。您为什么不解释您要解决的原始问题?
  • 这就是问题所在,我找不到从 Angular 2 生成 JWT 的官方方法。
  • 这不是问题,而是解决方案。在客户端生成 JWT 毫无意义。为什么需要它?
  • 用于服务器身份验证。我需要发送一些 POST 和 GET 签名。
  • 在客户端生成 JWT 有多个应用程序,其中最重要的是使用模拟后端或单元测试进行测试。您可以保持代码不变,并为您的服务层提供有效的 JWT。

标签: angular typescript jwt angular2-services auth0


【解决方案1】:

用户注册/登录后,必须在服务器端创建 JWT。

之后,在服务器响应中,令牌被发送回浏览器。最后,您必须将此令牌存储在浏览器本地存储中以供后续请求使用。

记得使用 HTTPS,否则任何人都可以使用 WireShark 轻松捕获令牌。

【讨论】:

  • “你必须开发你的过期令牌算法”——你不需要,让 JWT 自己过期。 “否则任何人”——当然不是“任何人”。
  • 为您的用户 userExpiryToken 添加一个到期日期:{ type: Date, required: false },。然后对于每个请求检查令牌是否过期。如果过期了
  • jwtSimple.encode(user, jwtConfig.secret);创建令牌。如果您更改用户中的任何内容,例如清空令牌到期日期或将布尔标志设置为已过期,它将更改我们的令牌,因此用户将无法再次使用令牌。这是强制用户更新令牌或让他或她再次登录或通过服务请求新令牌的简单方法。看看这个页面:jwt.io。它显示了令牌是如何构建的。
  • exp 声明是标准的一部分 (tools.ietf.org/html/rfc7519#section-4.1.4),您不需要添加任何其他额外检查。您对“如果您更改用户中的任何内容,例如清空到期令牌日期或将布尔标志设置为已过期”的建议是没有意义的:如果您将令牌保留在服务器端 - 您不需要 JWT cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions
  • 确实,zerkms。我的建议是基于 JWT。
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 2020-09-04
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 2020-05-03
  • 1970-01-01
相关资源
最近更新 更多