我正在寻找有关如何使用刷新令牌的简单明了的解释。我知道访问令牌过期后,将使用刷新令牌来获取新的访问令牌。 假设用户已通过身份验证,并获得了刷新令牌和访问令牌。
问题1: 当访问令牌过期时,IdentityServer4(而不是用户尝试访问的api)是否认为该用户随后“未经身份验证”?
问题2: 可以说访问令牌已过期,我可以在使用刷新令牌之前等待多长时间?我的意思是,如果访问令牌现在到期,并且我没有立即访问受保护的API的需要,而这种需要在5小时后出现,我可以拿起刷新令牌并使用它来获得新的访问权限吗?令牌?
问题3: 如果我想要永不过期的访问令牌怎么办?可以说我有一个类似facebook的应用程序,用户通常从不真正注销。如何实现该功能?
答案 0 :(得分:2)
请注意,访问令牌用于客户端代表用户访问资源(api)。对于使用Cookie身份验证且没有外部资源的网站,不需要刷新令牌。
问题1:假设您正在使用JWT令牌:从资源的角度来看,该请求是未授权的。由于这是客户端对资源的直接请求,因此IdentityServer不在其中。
从网站的角度来看,由于cookie尚未过期,因此用户仍可以登录。这可能导致“奇怪”的情况,即(对于网站)经过身份验证的用户无法访问外部资源(访问令牌已过期)。在这种情况下,您需要刷新令牌。
对于cookie身份验证,有一些方法可以延长cookie的寿命。
问题2:您可以随意等待,但要考虑到刷新令牌也可能过期。有延长寿命的选项。
还请注意,您可以根据需要请求任意数量的访问令牌。您不必等到访问令牌过期。但这可能不如检查访问令牌的到期有效。
配置一次使用时,只能使用一次刷新令牌。请求的结果将提供一个新的刷新令牌。
问题3:您是在谈论Cookie还是令牌?对于网站,您可以延长Cookie的寿命。