NTLM и Голанг

Я недавно выучил Go и экспериментирую с net/http библиотека. Я пытался пройти аутентификацию на сайте, используя http.SetBasicAuth функционировать, но это никогда не работает. Работает нормально с cURL но не с го. Я знаю, что это как-то связано с 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.

1 ответ

Решение

Проверка подлинности NTLM и обычная проверка подлинности не совпадают. NTLM - это протокол, который сложнее, чем просто user: строка пароля в заголовке.
Если вы хотите сделать запрос из кода Golang для аутентификации, вы должны использовать одну из существующих библиотек, например: go-ntlmssp

Также вы можете узнать больше о самом протоколе NTLM здесь

Другие вопросы по тегам