gpt4 book ai didi

websocket - 为 WebSocket 连接更新 token 的最佳做法是什么

转载 作者:行者123 更新时间:2023-12-03 07:36:51 33 4
gpt4 key购买 nike

这可能是基于意见的,但我仍然想知道是否有最佳实践,因为我对 websocket 几乎一无所知实践

我有一个 SPA,它从我自己的 OP 获取 JWT token .然后它使用该 JWT 连接到我使用 REST 和 WebSockets 拥有的其他服务。

就 REST 而言,它非常简单:

  • REST API 验证 JWT(在 Authorization: Bearer ... 中发送)并提供对 protected 资源的访问或以 401 响应,让 SPA 知道它需要请求一个新的 token 。

  • 现在使用 websockets :

    在 SPA 加载期间,一旦我得到一个 token ,我就会为我的 web 服务打开一个 WS。我发送的第一条消息是 login_message使用我的 JWT,然后我将其保存在服务器的 websocket 实例上以了解谁在发送消息。
    我收到的每条后续消息都会验证 JWT 以查看它是否已过期。

    据我了解,一旦过期,我将面临两种选择:
  • 使用 token_expired 删除 websocket某种错误,并在 token 刷新后强制浏览器建立新的 websocket 连接。
  • 保持 websocket 打开,返回错误消息并发送新的登录消息(一旦刷新 token )
  • 不要使用登录消息,而只是在每个请求中发送 JWT。

  • 问题 : 你会推荐哪种方法,为什么?在安全性和性能方面。还有其他我没有列出的常见做法吗?

    最佳答案

    我问了一个很老的问题,所以我很乐意分享我们选择的做法:

  • 一旦客户得到他的JWT第一次(当应用程序启动时)打开一个 WebSocket。
  • 为了验证 channel ,我们发送一条我们定义为协议(protocol)一部分的消息,称为 authMessage。其中包含 JWT .
  • 服务器将此数据存储在套接字的实例上,并在通过线路发送数据或从客户端接收数据之前验证其有效性/到期。
  • token 在 Web 应用程序到期前几分钟内静默刷新,另一个 authMessage发给服务器(从步骤 2 开始重复)。
  • 如果由于某种原因它在更新之前过期,服务器将关闭该套接字。

  • 这大致是我们在应用程序中实现的(没有优化)并且对我们来说效果很好。

    关于websocket - 为 WebSocket 连接更新 token 的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534287/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com