在一般情况下,Web API服务在用户发出的每个请求上发送新生成的令牌是否有意义,以便客户端应用程序必须用于下一个请求?
我正在考虑使令牌过期的方法,但如果客户端应用程序正在使用API中的数据,则不需要它再次登录。
我认为这很容易实现,但不确定是否存在用户体验或逻辑/安全问题。
答案 0 :(得分:4)
这是一项现有技术,并使用auth0解释的滑动会话概念:Refresh Tokens: When to Use Them and How They Interact with JWTs
滑动会话是在一段时间不活动后过期的会话。 当用户执行操作时,会发出新的访问令牌。如果用户使用过期的访问令牌,则该会话将被视为非活动状态,并且需要新的访问令牌。可以使用刷新令牌或需要凭证
来获取此新令牌答案 1 :(得分:1)
是的,Web API服务为新用户发送新生成的令牌是有意义的,这样客户端应用就可以代表用户将其用于后续请求。
是的,您可以让令牌过期而使它们过期,因为它们提前到期日期,以便用户可以在您在令牌的到期日期中指定的一段时间后重新进行身份验证
当令牌即将到期时,您可以拥有一个更新它的端点。您还可以使用滑动会话。
滑动会话是在一段时间不活动后过期的会话。可以想象,使用访问令牌和刷新令牌可以轻松实现。当用户执行操作时,将发出新的访问令牌。如果用户使用过期的访问令牌,则会话被视为非活动状态,并且需要新的访问令牌。无论是使用刷新令牌还是新的身份验证轮次都可以获得此令牌,您作为开发人员必须确定这一点。
现在,建议刷新令牌主要用于移动应用,而不是网络应用。原因是刷新令牌真的很长寿,这就是移动应用用户几乎永远保持登录的方式。在被劫持或泄露的情况下,您可以撤销刷新令牌!
您可能需要查看此优秀的tutorial,以获取有关其工作原理的更多信息!
哦@pedrofb已经提到过了!
答案 2 :(得分:0)
我建议不要在每个请求上刷新令牌。简单地说,我会做这样的事情来实现整个过程
首先,当用户通过发送身份验证您的应用程序时 他们的证件
生成一个唯一的令牌并将其作为回复发送回来 客户端
还要创建一个客户端cookie并使用该令牌设置值,我们 也可以指定cookie何时到期,让它说每个到期 24小时
因此,在后续请求中,从您的客户端获取cookie
将它附加到您的HTTP ajax库(例如,JQuery,RestyGWT,Apache
HttpClient或某些Android HTTP库)为Authorization :
your_cookie_token
接下来拦截来自服务器端的所有请求,检查是否存在
标题存在Authorization
最后获取Header值,这样就可以成为您的令牌 出于安全原因对其进行一些验证。
您可以更多地了解Cookie安全性和基于令牌的身份验证/请求。