Httponly cookie作为持票人令牌 - Laravel Passport

时间:2017-11-10 13:18:48

标签: laravel oauth axios laravel-passport

我已经开始使用React JS和Laravel 5.5构建应用程序。我已经安装了Laravel Passport并成功设法在我的React JS应用程序中登录和注销我的用户 - 但我被告知要考虑使用httponly cookie以达到安全目的。

在我的工作代码中,我只是将访问令牌存储在localStorage中,并使用axios标头中的Authorization': 'Bearer ' + token将其发送到api,这非常有效。但是,当我使用httponly设置cookie时,我无法获取它的值(我认为这正是重点!) - 如果我将cookie.loadAll()登录到控制台,则使用react-cookie(来自npm)我看到的唯一Cookie是新的XSRF-TOKEN Cookie,但不是我设置的accessToken Cookie。那么如何将此令牌发送到api?

3 个答案:

答案 0 :(得分:0)

由于您无法从JS读取httpOnly cookie,因此从后端获取新令牌时,后端必须在响应正文中发送令牌。

答案 1 :(得分:0)

浏览器会话 cookie 的使用和不记名令牌是不同的身份验证策略(基于 cookie 和基于令牌)。

在我看来,它们不应该混合在一起。

Lavavel 护照支持使用不记名令牌或开箱即用的 cookie 进行身份验证(请参阅 TokenGuard user 中的条件) 为此,您必须使用 Passport::cookie

在这种情况下,您将能够设置 cookie 并使用 HttpOnly 标志和其他属性来保护它们。

答案 2 :(得分:-1)

作为持有人令牌的Httponly cookie没有多大意义。拥有cookie可以帮助保护您和用户免受XSS攻击,因为它们无法通过javascript读取。它们可以用于例如用于存储会话信息,并且当用户例如发送时发送。页面重新加载。

将授权标头设置为'Bearer ' + token是如何将令牌发送到api的正确方法。在api服务器上使用令牌之前,您应该始终检查令牌是否仍然有效。