Angularjs 和 slim 框架 JWT 身份验证和令牌刷新流程
Angularjs and slim framework JWT authentication and token refresh flow
我想知道到目前为止我所做的是否是 authenticating/renewing 令牌的合理方式,以及在我尝试限制数据库时是否应该注意任何缺陷或漏洞互动为零。开始了。
- 用户通过正常 Username/password 或通过 Facebook
进行身份验证
- PHP后端生成一个有效期为30分钟的token发送给angularjs客户端
- JWT 令牌存储在 $localStorage
- 在拦截器的帮助下,在每个请求中注入 JWT 令牌 header
- 所有需要身份验证的 Slim 路由都在中间件的帮助下检查发送的令牌。
- 如果令牌无效(已过期、已被篡改、不适合该特定角色),Slim 将响应 401/403 错误。
- angular 服务每分钟检查一次令牌是否即将过期
- 如果令牌即将过期(还剩 5 到 1 分钟),服务会将旧令牌发布到另一个 API 端点。
- API 端点检查令牌的有效性并用一个新的令牌响应,有效期为 +30 分钟。
- 我之前提到的轮询服务替换了 $localStorage 中的旧令牌。
- 冲洗并重复。
注意:SSL 将在生产中实施
赏金授予@Valdas,因为他是唯一一个实际回答的人
无需循环令牌过期检查。我使用 https://github.com/auth0/angular-jwt 作为我的 Angular 项目的库,它提供了一种在触发 HTTP 请求之前刷新令牌的方法,从而简化了身份验证机制。
此外,如果请求加载模板(以 .html 结尾),您可以从请求中删除令牌,但这只是个人偏好。
我想知道到目前为止我所做的是否是 authenticating/renewing 令牌的合理方式,以及在我尝试限制数据库时是否应该注意任何缺陷或漏洞互动为零。开始了。
- 用户通过正常 Username/password 或通过 Facebook 进行身份验证
- PHP后端生成一个有效期为30分钟的token发送给angularjs客户端
- JWT 令牌存储在 $localStorage
- 在拦截器的帮助下,在每个请求中注入 JWT 令牌 header
- 所有需要身份验证的 Slim 路由都在中间件的帮助下检查发送的令牌。
- 如果令牌无效(已过期、已被篡改、不适合该特定角色),Slim 将响应 401/403 错误。
- angular 服务每分钟检查一次令牌是否即将过期
- 如果令牌即将过期(还剩 5 到 1 分钟),服务会将旧令牌发布到另一个 API 端点。
- API 端点检查令牌的有效性并用一个新的令牌响应,有效期为 +30 分钟。
- 我之前提到的轮询服务替换了 $localStorage 中的旧令牌。
- 冲洗并重复。
注意:SSL 将在生产中实施
赏金授予@Valdas,因为他是唯一一个实际回答的人
无需循环令牌过期检查。我使用 https://github.com/auth0/angular-jwt 作为我的 Angular 项目的库,它提供了一种在触发 HTTP 请求之前刷新令牌的方法,从而简化了身份验证机制。
此外,如果请求加载模板(以 .html 结尾),您可以从请求中删除令牌,但这只是个人偏好。