如何将JWT令牌从PHP发送到Angular?

时间:2018-07-29 21:48:43

标签: php angular security jwt

因此,很遗憾,我仍在设法很好地了解我的应用程序提供身份验证所必须经过的流程。所以我打算用PHP后端制作Angular应用。要获得JWT,用户将提供其电子邮件/密码作为对PHP文件进行的HTTP发布请求的正文。

在该文件中,将命中数据库以检查其凭据,如果它们有效,则将需要为其提供JWT。我的问题是,如何将JWT令牌发送到前端?

  • 做一个简单的echo json_encode($jwt)可能是个坏主意。

  • 我可以使用PHP的setcookie()与其他HTTP标头一起发送cookie。而且我可以将该cookie设置为httpOnly以使其更加安全,但是我需要添加另一个cookie来防止XSRF攻击。

  • 一旦客户端实际拥有JWT令牌,我就知道我可以使用Bearer身份验证方案并将令牌传递到Authorization HTTP标头中,然后PHP文件可以通过查看标头来获取令牌。但是我是否还可以使用Bearer身份验证方案,并使用该Authorization HTTP标头将新创建的JWT令牌从PHP文件传递到Angular?

抱歉,这有点令人困惑。如有任何疑问,请发表评论。

1 个答案:

答案 0 :(得分:1)

仅在cookie中设置jwt或仅返回jwt,甚至添加到响应的标头中有什么问题?

我的看法完全取决于您要如何在客户端阅读它。如果我们在谈论标准,那么在响应或设置cookie的标头中可能是最标准的方法,但是没有什么阻止您/例如,没有书将rulbook作为json返回

任何安全性验证都应该在服务器方面,因为没有什么可以阻止我或您仅仅操纵javascript并试图炸毁服务器。使用json_encode或Response的标头甚至cookie接收它,我将可以访问它。毕竟,我需要它来提出进一步的请求。

关于JWT的事情是,在字符串组合下有数据,例如用户名,电子邮件,(密码?)和expiration_date。您可以将所需的任何信息组合到$jwt中,并且使用秘密(仅后端知道)来加密它,然后将其返回给用户。每当用户提出请求时,您都需要:

  1. 验证是否在HTTPRequest中接收到授权令牌(jwt)

  2. 验证令牌是否有效以及内容是否有效(例如expire_date)。

如果您正在寻找与此主题有关的可能的安全漏洞(我的意思是,对这个主题进行身份验证并确保请求它的用户收到令牌),其中之一是Man in the middle,但没有HTTPS连接无法解决