NTLM 和 Golang

NTLM and Golang

我最近学习了 Go,我正在试验 net/http 库。我一直在尝试使用 http.SetBasicAuth 函数对站点进行身份验证,但它似乎从来没有用过。它适用于 cURL 但不适用于 Go。我知道这与 NTLM 有关,但我不知道如何解决这个问题

卷曲:

curl -v "http://server_that_im_trying_to_auth_with" --ntlm -u user:pass

开始:

 req, _ := http.NewRequest("GET", "url", nil)
 req.SetBasicAuth(user, pass)
 resp, _ := http.DefaultClient.Do(req)
 body, _ := ioutil.ReadAll(resp.Body)

正文不断返回站点 401 页面。

NTLM 身份验证和基本身份验证不同。 NTLM 是一种比 header.
中的 user:password 字符串更复杂的协议 如果您想从 Golang 代码发出请求以进行身份​​验证,您应该使用现有的库之一,例如:go-ntlmssp

您还可以阅读有关 NTLM 协议本身的更多信息here