【问题标题】:Is there a Golang Websocket library that would let me modify the initial request / let me pick the http.Client? [closed]是否有一个 Golang Websocket 库可以让我修改初始请求/让我选择 http.Client? [关闭]
【发布时间】:2023-12-03 19:10:02
【问题描述】:

我想连接到 websocket 服务器,但端点是经过 Kerberos 认证的。我有一个能够对 Kerberos 请求进行身份验证的库,并且我还有一个 http.Client 包装器,它对通过它发送到任何端点的所有请求进行身份验证。

我的工具似乎都不适用于 gorilla/websocket。我尝试了一些方法,包括发送经过身份验证的 GET 请求,然后将响应标头传递到 websocket.DefaultDialer.Dial(),但这不起作用,因为实际的握手请求本身没有经过身份验证。

因此,我很困惑。有没有人知道如何做到这一点?

【问题讨论】:

  • 什么特别不适用于 Gorilla 包。使用 Gorilla 包,应用程序可以创建底层网络连接、设置握手请求头和访问握手响应头。
  • 嗨 Cerise,Dial() 将 http.Header 作为初始升级请求的标头传递,对吗?我的问题是 websocket 服务器是 Kerberos 认证的。我需要对升级请求本身进行身份验证。
  • 使用 Gorilla 我认为您可以添加到传递给 websocket.Upgrade() 的标头中。
  • @pure_Redwood 您可以控制网络连接和标头。您还需要什么身份验证?

标签: http go websocket kerberos gorilla


【解决方案1】:

我想通了。这是我的工作:

  1. 我向服务器上任何经过身份验证的端点发送一个 Kerberos 身份验证的 GET 请求。
  2. 然后我验证响应并获取 Cookie。
  3. 我向 websocket 端点创建了一个经过 Kerberos 身份验证的 GET 请求,并将 Cookie 添加到其标头中。
  4. 然后我通过 gorilla/websocket 拨号

问题在于 cookie 的处理。在这里留下答案,以防人们在使用 Kerberos 或其他身份验证服务时遇到类似的问题。

【讨论】:

    最近更新 更多