在服务器上验证令牌的正确方法是什么?
我在我的应用程序中使用jwt令牌机制,现在它的工作方式如下:
- 客户端使用用户名和密码登录
- 服务器检查用户名和密码,并使用RSA创建令牌
公钥和私钥,并使用有效负载向客户端发送新令牌
包含用户的电子邮件地址,然后存储相同的令牌
数据库中。
- 服务器上的任何后续资源请求,客户端发送
然后,jwt令牌服务器使用可用的令牌检查令牌
数据库基于用户登录的电子邮件地址。
- 然后将资源提供给客户。
醇>
我想我在这里遗漏了一些东西。阅读其他博客文章,我看到该标记应该用密钥验证。
我有几个问题:
- 我不确定是否应该根据公钥检查令牌
私钥
- 在向客户端发送jwt令牌时,我必须发送公钥
客户端在有效负载中,因为我正在使用RSA机制?所以对于每个请求
对于资源,我必须解码令牌并检查公钥
反对私钥?
- 在哪些情况下,我需要在数据库中存储令牌?或者是
根本不需要在数据库中存储令牌?
- 当恶意在客户端获取令牌时会发生什么
并用它来登录?
醇>
注意:我使用vanilla java和jax-rs(rest)作为后端,使用angularjs作为前端。感谢