laravel - 永久授权 PHP 应用程序向 JWT auth 保护 API 发出请求

标签 laravel api authentication authorization jwt

也许我使用了错误的关键字进行了搜索,但我从未发现有关以下情况的任何信息:

我有一个带有 JWT 身份验证的 API(Laravel + tymon/jwt-auth)和一个 PHP 应用程序,它应该查询受 JWT token 保护的 API。

如何确保应用程序始终经过身份验证?在阅读了很多关于 JWT auth 的教程和文章之后,我留下了这个想法:

  • 使用永久存储在消费应用程序中的永不过期的 token 。如果我理解正确,这可能是一个安全问题,因为有权访问该 token 的人可以访问 API,只要他愿意?但是我不明白为什么如果 token 被盗,这个 token 不应该失效?
  • 在每个请求上刷新 token 并使旧 token 无效。这意味着消费应用程序必须在其存储中的每个请求之后更新 token (我猜数据库是最有意义的)。在我看来,这会产生很多开销,并且不会阻止 jwt-auth 的 refresh_ttl环境。
  • refresh 使用额外的 API 请求(也许是基于 cron 的?)路由以防止 token 过期。还有 jwt-auth 的 refresh_ttl我认为的问题。

  • 我想知道为什么似乎没有关于这种情况的讨论/文章。
    我非常欢迎有关该主题的任何帮助!

    最佳答案

    您不希望您的用户每次都登录,但您也不希望他们永远登录。

    这是我的想法

  • 我已经为商业应用程序使用了 1 年的代币,我将它用于低级别的第三方开发人员,api 概念已经让他们不知所措,所以我在 auth thingy 上很轻松。每年一次,他们的应用程序崩溃了,他们不得不伸出手来获取新的代币,糟糕的设计,但它奏效了。
  • 在每个请求上刷新你的 token 会破坏你的性能,让攻击者有一个一致的方式来破解/预测你的 key ,没有好处。
  • 在我看来,这是你最优雅的建议。您可以使用一些 PWA 功能来实现这一点。

  • 我建议增加 refresh_ttl至 30 天并保留 ttl在一小时内。
    如果您使用的是 SPA 或重型 js 应用程序:
    在您的 javascript 上,您可以进行 ajax 设置(或原型(prototype)或您的 javascript 框架用于 oop 的任何内容),并在获得 .

    如果您只为您的应用程序使用通用页面刷新,请将您的 JWT 存储在一个 cookie 上,然后您的应用程序可以在需要时刷新它,并且不需要制作特殊的 js。 HTTPS 将负责安全性。

    关于laravel - 永久授权 PHP 应用程序向 JWT auth 保护 API 发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472329/

    相关文章:

    javascript - 无法正确获取 JSON/JSONP

    c++ - 无法在 Hook 中获取 WM_TOUCH 消息

    .net - 在网站中注销用户后,他丢失了上一个 session 的用户保存数据

    java - 如何使用 hg pull 提供登录凭据?

    php - Laravel 分页返回 http 而不是 https 的链接

    如果验证失败,Laravel 会预填多个表单

    php - Laravel 动态属性不起作用

    php - 如何在 Laravel 5.1 中完成后捕获作业队列详细信息?

    python - REST API - 批处理与多次调用

    laravel - 新的密码散列 - 在登录尝试时将用户重定向到密码重置