【发布时间】:2016-03-24 04:07:21
【问题描述】:
尝试使用 JWT 为 API 实施安全身份验证方法,该 API 将被许多客户端使用,包括 Web(单页应用程序)、桌面、移动设备我想出了这个系统:
- 客户端调用 /auth/login 并设置用户名和密码
- 在验证服务器返回两个令牌后,一个 auth_token 和一个 refresh_token
- 身份验证令牌的生命周期很短,只有 15 分钟,用于后续的每个 API 调用
- 刷新令牌的寿命可能长达 12 小时到一周,但使用格式为 user_pass + long_string 的密钥签名
- 令牌过期后,调用 /auth/renew
- 发送身份验证令牌以检查其过期时间(不超过一小时)
- 刷新令牌也被发送并使用用户密码进行验证
- 如果刷新令牌未过期且授权令牌长时间未过期,则会发回新的授权令牌
- 如果用户密码已更改,则刷新令牌无效,用户需要在其现有的短期身份验证令牌过期后重新进行身份验证
虽然身份验证令牌有一个小窗口过期但仍然有效,并且对数据库进行了调用;这是使用 JWT 进行身份验证以及处理密码更改和令牌刷新的整体安全方式吗?
【问题讨论】:
标签: authentication authorization token jwt