使用Laravel 5和Angular 4发布,访问和使用api令牌

时间:2017-10-20 16:43:58

标签: angular api authentication laravel-5 token

我正在使用Laravel 5.5和Angular 4构建SPA。我对验证我的api请求的“最佳”(安全,安全,最佳实践等)方式感到困惑。目前,我有一个传统的基于会话的登录系统,在用户登录后,重定向到我的Angular应用程序的索引页面 - 其中包含整个应用程序。所有后续与服务器的交互都是通过api调用完成的。

根据一些基本教程,我有以下设置:为每个用户分配一个60个字符的随机字符串,作为其api令牌。在他们使用用户名和密码登录后,api令牌将直接输出到标头中meta标签中的HTML。然后,Angular会抓取此令牌并将其传递到每个api调用的标头中。

但是,我已经读过,不应该通过非SSL连接传递令牌(以避免中间人攻击),并且该令牌应该自动生成/设置为过期等。< / p>

所以我的问题:

  • 对于单页应用,仅使用内部api调用(不是跨域)。以这种方式传递未加密的api令牌是否合理?
  • 将api令牌直接输出到Meta标签中的HTML是否可以/安全?

关于最后一点,这似乎是使用Laravel的CSRF令牌的标准做法?也许我刚读过太多偏执的博客文章?

1 个答案:

答案 0 :(得分:0)

在现代网络编程中,你永远不会有太多的令牌。 访问令牌刷新令牌反XSRF令牌等等。

  

这是我收到很多问题的最后一种令牌   最近。具体来说,是否需要防止跨站点   在构建基于API的应用程序时请求伪造?

在浏览器可以隐式验证用户身份的任何应用程序中,您需要防止跨站点请求伪造。当浏览器自动发送身份验证信息(使用cookie进行身份验证时)以及使用Windows身份验证的应用程序时,会发生隐式身份验证。

  

通常, API不使用Cookie进行身份验证。相反, API   通常使用承载令牌,以及在中运行的自定义JavaScript代码   浏览器必须通过显式添加令牌来发送令牌   请求。

但是,也有一些API与Web应用程序位于同一服务器进程中,并使用与应用程序相同的cookie进行身份验证。这种情况下您必须使用防伪标记来阻止XSRF。

您的项目或应用程序是:

  1. Laravel是您的API服务
  2. Angular 4是您的客户端应用
  3.   

    最好的方法是使用基于令牌的服务,以下链接用于laravel   5.5用于创建令牌和身份验证令牌以及使用apis的用户:https://laravel.com/docs/5.5/passport