JWT规范仅描述了有效负载及其发送方式,但未启用身份验证协议,从而允许了灵活性,但非常不幸的是,灵活性可能导致反模式和设计错误。
我正在寻找一些经过深思熟虑且经过测试的JWT身份验证企业模式,可以使用或改编它,但未能找到完整的东西。
我在想的是:
- 当未满足任何授权标头或JWT令牌无效或已过期时,发送HTTP 401
- 为了进行身份验证,请使用/ login REST通道,将用户名和密码作为JSON对象发送
- 为了使令牌保持活动状态,请使用/ keepalive REST通道,每N(5)分钟调用一次,接收新的JWT令牌,并在每次调用后替换现有的令牌(令牌在M(15)分钟后过期)
但是,令我困扰的是该/ keepalive频道的必要性。另一方面,它迫使我防止身份验证过期,即使用户不在(该决定,如果我们希望仍然不执行keepalive的决定),当然,这是对协议的额外调用和额外复杂性。有趣的是,服务器会自动延长令牌。在基于会话的环境中,它是通过重置时间戳来实现的,但是,在这里,服务器将不得不发送新令牌,可能不是每次都发送一次,但是一旦令牌在R(例如10)分钟内到期,就必须发送新令牌。但是将其放在响应主体中将意味着修改JSON响应协议(因此,该解决方案具有侵入性且不透明),并且将客户端可以处理的额外HTTP标头不一定不一定是一个好模式。一世'
有没有可以解决我的问题的现成企业模式?我的协议草案是否可靠?与从头开始设计相比,我更喜欢使用现成的东西。