使用 IdentityServer4 刷新令牌

Using IdentityServer4 Refresh Tokens

我正在寻找有关如何使用刷新令牌的简单明了的解释。我知道一旦访问令牌过期,就会使用刷新令牌来获取新的访问令牌。 假设用户已通过身份验证并获得刷新令牌和访问令牌。

问题一: 当访问令牌过期时,IdentityServer4(不是用户尝试访问的api)是否认为用户是"unauthenticated"?

问题二: 可以说访问令牌过期了,我可以在使用刷新令牌之前等多久?我的意思是,如果访问令牌现在过期,并且我没有立即需要访问受保护的 API,并且需要在 5 小时后出现,我可以只获取刷新令牌并使用它来获取新的访问令牌?

问题三: 如果我想要一个永不过期的访问令牌怎么办?假设我有一个像 facebook 这样的应用程序,用户通常不会真正注销。我如何实现该功能?

请注意,访问令牌用于客户端代表用户访问资源 (api)。对于使用cookie认证且没有外部资源的网站,不需要refresh token。

问题一:假设您使用的是JWT token:从资源的角度来看,请求是未经授权的。由于这是客户端对资源的直接请求,IdentityServer 不是其中的一部分。

从网站的角度来看,用户可能仍处于登录状态,因为 cookie 没有过期。这可能会导致 'odd' 情况,即(对于网站)经过身份验证的用户无法访问外部资源(访问令牌已过期)。对于这种情况,您需要刷新令牌。

对于 cookie 身份验证,有一些方法可以延长 cookie 的生命周期。

问题 2:您可以等多久,但请注意刷新令牌也可能过期。有延长寿命的选项。

另请注意,您可以请求任意数量的访问令牌。您不必等到访问令牌过期。但这可能不如检查访问令牌的过期有效。

配置一次性使用时,刷新令牌只能使用一次。在请求的结果中,将提供一个新的刷新令牌。

问题 3:您指的是 cookie 还是令牌?对于网站,您可以延长 cookie 的生命周期。