我有一个python应用程序需要为用户提供JSON Web令牌以进行身份验证。令牌使用PyJWT库(import jwt)构建。
根据我一直在阅读的内容,在提供一些凭据(例如登录)后将令牌提供给客户端似乎是一种可接受的做法。
然后,客户端在授权承载字段的HTTP请求标头中使用该标记,该标记必须通过TLS发生,以确保不暴露标记。
我不明白的部分是客户意外暴露该令牌会怎样?不会让任何拥有该令牌的人冒充他们吗?
将令牌交给客户的最安全方式是什么?
答案 0 :(得分:2)
您可以在将令牌传递给客户端之前对其进行加密,或者使用自己的公钥,或者在带外传递密钥。这确保了交付,但仍未涵盖所有内容。
简而言之,没有简单的解决方案。您可以执行尽职调查并要求使用安全功能,但是一旦客户解密了令牌,仍然无法确保他们不会意外地或以其他方式暴露它。良好的安全性要求参与者都要养成良好的习惯。
关于令牌的好处是你可以给他们一个预设的生命周期,或者如果你怀疑他们已经受到损害,你可以轻易地撤销它们并生成新的。
答案 1 :(得分:1)
将基于用户提供的信息构建令牌,并且您的后端决定成为令牌的一部分。为了更高的安全性,您可以将令牌信息扩展到用户的某些特定数据,如当前IP地址或设备mac地址,这将为您提供更安全的身份验证方式,但会限制用户每次使用同一设备,如如果发生新登录,您可以发送确认电子邮件。