首页 文章

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

提问于
浏览
0

所以我很遗憾还在努力掌握我的应用程序必须通过提供身份验证的流程 . 所以我打算用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 回答

  • 1

    简单地在cookie中设置jwt或只返回jwt,甚至添加到响应的头部有什么问题?

    我看待它的方式,一切都取决于你想如何在客户端阅读它 . 如果我们正在讨论标准,那么,在响应的 Headers 或设置cookie可能是最标准的方法来做到这一点但没有什么能阻止你/没有一个rulbook将它作为json返回例如

    任何安全验证都应该在服务器端,因为没有什么能阻止我或你只是操纵javascript并试图炸毁服务器 . 使用json_encode或Response的标头甚至cookie接收它,我将有权访问它 . 毕竟,我需要它来提出进一步的要求 .

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

    • 验证HTTPRequest中是否正在接收授权令牌(jwt)

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

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

相关问题