【发布时间】:2015-11-16 18:43:20
【问题描述】:
我想知道到目前为止我所做的是否是一种验证/更新令牌的可靠方法,以及在我试图将数据库交互限制为零时是否应该注意任何缺陷或漏洞。来了。
- 用户通过普通用户名/密码或通过 Facebook 进行身份验证
- PHP后端生成一个有效期为30分钟的token并发送给angularjs客户端
- JWT 令牌存储在 $localStorage 中
- 在拦截器的帮助下,JWT 令牌被注入到每个请求标头中
- 所有需要身份验证的 Slim 路由都在中间件的帮助下检查发送的令牌。
- 如果令牌无效(已过期、已被篡改、不适合该特定角色),Slim 将响应 401/403 错误。
- 角度服务每分钟检查令牌是否即将过期
- 如果令牌即将过期(还剩 5 到 1 分钟),服务会将旧令牌发布到另一个 API 端点。
- API 端点检查令牌的有效性并以过期时间为 +30 分钟的新令牌进行响应。
- 我之前提到的轮询服务替换了 $localStorage 中的旧令牌。
- 冲洗并重复。
注意:SSL 将在生产中实现
赏金授予@Valdas,因为他是唯一真正回答的人
【问题讨论】:
-
有一篇关于 JWT 存储位置的好文章。 stormpath.com/blog/…
-
@MikaTuupola 感谢您的提示。我会将令牌存储在 cookie 中以增加保护。我已经实现了那里提到的反 CSRF 机制,并查看了您的 slim-jwt-auth 中间件。干得好!我推出了自己的非常基本的中间件,但你的绝对是最重要的。一定要试一试。 cookie/localStorage 问题是我的逻辑中唯一看起来错误的事情吗?
标签: php angularjs authentication slim jwt