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

Posted

技术标签:

【中文标题】我应该还是不应该在 Laravel Passport 中使用带有密码授予授权的刷新令牌?【英文标题】:Should I or shouldn't I use refresh tokens with Password Grant authorization in Laravel Passport? 【发布时间】:2019-12-22 01:15:37 【问题描述】:

如果我有一个带有 Laravel 后端的单页 Web 应用程序,我最好的身份验证选项似乎是带有密码授予身份验证流程的 Passport。在 Passport 中,这将返回一个访问令牌和一个刷新令牌。

为了安全起见,我想发出一个短期访问令牌并在它过期时刷新它。但是,所有关于在 javascript 应用程序中使用 OAuth 的可用信息都说“不要让前端可以访问您的刷新令牌”,因为它是长期存在的,并且可以被其他人用来生成新的访问令牌。

For example:

单页应用程序(通常实现隐式流)应该 永远不会收到刷新令牌。刷新令牌本质上是一个 允许用户保持身份验证的用户凭据 无限期地。这些敏感信息应安全存储并 没有在浏览器中暴露客户端。

这是否意味着基于浏览器的 SPA 不能使用刷新令牌,因此必须只发布在合理的“会话”长度后过期的访问令牌,然后强制用户再次登录?

否则,是否有合适的方法在 Laravel Passport 应用程序中使用 Password Grant 身份验证实现短期访问令牌和刷新令牌,同时保持良好的安全性?

【问题讨论】:

【参考方案1】:

存储刷新令牌没有害处,因为它们可用于在访问令牌(如您所说的短暂)过期后获取另一个访问令牌,从而创造良好的用户体验。

【讨论】:

以上是关于我应该还是不应该在 Laravel Passport 中使用带有密码授予授权的刷新令牌?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 关系我应该使用 hasManyThrough 还是 belongsToMany?嵌套 3 个表

我应该先学习 Angularjs 还是 Laravel? [关闭]

我应该在 admin 和 api 之间重用 laravel 中的控制器吗?还是让我的管理员使用我的 API?

使用laravel作为后端API和AngularJS作为前端的实时通知

使用Laravel的语义版本控制进行包版本控制

TypeError:无法读取未定义 Passpor 错误的属性“名称”