我对使用Java Spring的API JWT刷新令牌工作流有一些疑问。
到目前为止,我已经知道了:
问题:
答案 0 :(得分:2)
区别两个标记的最佳方法是什么。
刷新令牌根本不必是JWT。我更喜欢简单地生成一个随机的字母数字字符串。刷新令牌不包含任何其他信息。它需要查询数据库以确认刷新令牌的有效性。您可以通过它们在请求中出现的位置来区分它们。授权令牌(访问令牌)应显示在您选择的标题中。
第3步中的错误(而非未经授权)应该是什么,以便将其与没有有效令牌的请求区分开来
发送401未经授权正是这样做的方法。 401告诉客户端,他现在不能访问资源,但是可以采取措施以便再次访问资源(登录/刷新令牌)。另一边的403会告诉客户资源不属于他,他将不得不请求许可,例如通过联系管理员
/ token / refresh当前不要求身份验证。应该吗?
不,不需要身份验证。
/ token / refresh端点应该是带有标题的POST,带有参数的POST或带有标题的GET。
一切取决于您。我更喜欢使用带有参数和专用网址的POST,例如/ token / refresh