我在Azure移动服务中使用自定义身份验证,方法是在自定义登录API中生成JWT(JSON Web令牌)。一旦用户拥有JWT,它就会一直有效,直到达到编码的到期时间。
除了在每个经过身份验证的请求上针对会话表显式检查JWT令牌之外,是否有办法在JWT令牌到期时间之前使其无效(如用户注销时那样),以便使用该令牌进行任何后续请求因为X-ZUMO-AUTH
标头中的值永远不会到达任何表API或自定义API脚本吗?
答案 0 :(得分:10)
不是真的。当用户在客户端注销时,它使用的JWT并没有真正失效 - 它只是从客户端的内存中删除(例如,参见the managed SDK上的代码)。 JWT验证是通过检查其签名与移动服务的主密钥完成的,除非此密钥被更改(这会使所有服务的JWT令牌无效,我认为这不是你的意思想要),令牌将有效,直到它过期。
由于您自己生成JWT,因此可以考虑使用较小的过期时间,这可能对您的情况有所帮助。
您也可以在mobile service's feedback forum中推荐此功能。我创建了one related feature suggestion,您也可以考虑添加评论并进行投票。
答案 1 :(得分:0)
支持JWT失效(总有理由):
我最终为每个用户存储了一个唯一的字符串,我使用全局公共字符串进行哈希处理,因此我可以根据需要使单个用户的令牌或所有令牌无效。
答案 2 :(得分:0)
不。注销用户并使JWT令牌无效的唯一方法是将其从会话表中删除/删除。这就是您已经在做的方式。