了解 Laravel Passport 刷新令牌

Posted

技术标签:

【中文标题】了解 Laravel Passport 刷新令牌【英文标题】:Understanding Laravel Passport refresh token 【发布时间】:2020-09-14 13:24:03 【问题描述】:

我正在尝试了解如何使用带有电子邮件和密码的 Laravel Passport。

我知道我不应该在客户端存储 client_id 和 client_secret。 我编写了自己的登录名,它按预期工作,作为回报,我得到了访问令牌,但我想不出一种方法来刷新这个令牌在客户端上存储 client_id 和 client_secret。 或者没有client_id和client_secret就没有办法刷新accesstoken?

也已阅读How to use Laravel Passport with Password Grant Tokens?,但我没有明确的答案如何以及是否可以刷新令牌。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/

通常,刷新令牌仅用于机密客户端。 但是,由于可以使用授权码流 如果没有客户端密码,客户端也可以使用刷新授权 没有秘密。如果客户端被发布了一个秘密,那么 客户端必须验证此请求。通常,该服务将 允许附加请求参数 client_id 和 client_secret,或接受 HTTP Basic 中的客户端 ID 和密码 身份验证头。如果客户端没有秘密,则没有客户端 身份验证将出现在此请求中。

这意味着刷新令牌可能不是不应存储凭据的客户端应用程序的正确选择。

【讨论】:

感谢您的评论,我想我将用 jwt 包替换 Passport。这可能更适合我。

以上是关于了解 Laravel Passport 刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Laravel Passport 中的刷新令牌中获取 id?

我应该还是不应该在 Laravel Passport 中使用带有密码授予授权的刷新令牌?

Laravel 护照刷新令牌

在护照 laravel 中刷新令牌时出现 TokenMismatchException

使用 Passport 和 passport-azure-ad 时没有刷新令牌

护照密码授予令牌刷新