3
我目前正在编写一个API,并且一直在困扰着我如何正确安全地进行身份验证/授权。API身份验证流程
据我了解,这是怎么一回事呢:帐户
- 新用户注册通过
api/user/register
端点(或api/user/login
现有用户) - 服务器收到请求,并检查用户名是唯一等等。之后,它发出(如果一切正常的话)访问令牌和刷新令牌,两者都被签名以增加安全性。
- 客户端应用程序接收到令牌并将它们存储在浏览器cookie(或本地/会话存储)中,并确保通过HTTPS安全地将其发送到API的任何后续请求中。
- 当接收到受保护路由的请求时,服务器会检查访问令牌的过期日期,如果过期,将检查数据库中刷新令牌的有效性。如果无效,请询问客户端的重新认证。否则,重新发布一个新的访问令牌。
我的问题是关于处理刷新标记的步骤。
我也在写客户端应用程序(在React中);我不会将API发布给公众。我只是将后端编写为客户端应用程序的API。
- 我还应该使用刷新令牌吗?
- 我需要
api/auth/token
路线吗?我一直在实现示例中阅读它们,我觉得我可以只需要一些帮助函数来查询数据库并在后端代码中重新发布令牌,而不必查询另一个端点来执行此操作。
很抱歉,如果他们是愚蠢的问题,但页面后,我一直在钻研页详细介绍了身份验证规范,以及细微的差别一页一页地离开我了困惑和不确定什么是真正的“最佳实践“在生产中。
您是否有一个要求/功能使得必须使用单独的刷新令牌?我无法确定你的问题会有什么。我知道一些现实世界的生产系统,但大多数没有。 –