Laravel Passport - tokensExpireIn、refreshTokensExpireIn 和 personalAccessTokensExpireIn 之间有什么区别

Laravel Passport - what is the difference between tokensExpireIn, refreshTokensExpireIn and personalAccessTokensExpireIn

你好,我是 laravel 护照的新手,谁能告诉我 tokensExpireIn、refreshTokensExpireIn 和 personalAccessTokensExpireIn 之间的区别是什么?

访问令牌 包含直接访问资源所需的信息。换句话说,当客户端将访问令牌传递给管理资源的服务器时,该服务器可以使用令牌中包含的信息来决定客户端是否被授权。访问令牌通常有一个到期日期并且是短暂的 (tokensExpireIn)。

刷新令牌 包含获取新访问令牌所需的信息。换句话说,每当需要访问令牌来访问特定资源时,客户端都可以使用刷新令牌来获取认证服务器颁发的新访问令牌。常见用例包括在旧访问令牌过期后获取新访问令牌,或首次访问新资源。刷新令牌也可以过期,但寿命相当长 (refreshTokensExpireIn)。

刷新令牌背后的想法是,如果访问令牌因为它是短暂的而被泄露,攻击者只有有限的时间来利用它。

刷新令牌如果遭到破坏,将毫无用处,因为除了刷新令牌之外,攻击者还需要客户端 ID 和密码才能获得访问令牌。

个人访问令牌 用于用户可能希望在不通过标准授权代码重定向流程的情况下为自己生成访问令牌的情况。允许用户通过您的应用程序的 UI 向自己颁发令牌可能有助于允许用户使用您的 API 或者可以作为一种更简单的一般颁发访问令牌的方法。这些令牌通常是长期存在的 (personalAccessTokensExpireIn),但生命周期也可以通过 UI 进行管理。例如 Github: https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token