Как открыть браузер с аутентификацией NTLM - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь эмулировать браузер, открыть URL-адрес в интрасети и получить код состояния 401. Как открыть URL-адрес с помощью NTL-аутентификации или входа в систему? Спасибо

package main

import (
    "gopkg.in/headzoo/surf.v1"
        "fmt"
)

func main() {
    bow := surf.NewBrowser()
    bow.AddRequestHeader("Accept", "text/html")
    bow.AddRequestHeader("Accept-Charset", "utf8")
    err := bow.Open(url)
    if err != nil {
        panic(err)
    }

    fmt.Println(bow.StatusCode())
}

1 Ответ

0 голосов
/ 17 октября 2019

Как открыть URL с помощью NTL аутентификации или логина, паса? Спасибо1. Извините, ntl - это NTLM 2. Сервер аутентифицирует меня "прозрачно"

Я предполагаю, что пользователь прошел аутентификацию в домене AD.

Первое - протокол NTLM не так прост, как, например, базовая аутентификация. Это многошаговый протокол, включающий некоторые системные / пользовательские данные. Клиент и сервер должны обмениваться несколькими данными запроса / ответа в HTTP-заголовке Negotiation.

Я бы предложил использовать готовую библиотеку;например, go-ntlmssp или gokrb5 .

Примечание: при использовании аутентификации SPNEGO (NTLM через HTTP), в зависимости от настроек AD, если у пользователя / участника службы слишком много ролей, HTTP-заголовок Negotiation может быть ОЧЕНЬ большим. Если у вас есть ограничение по умолчанию для заголовков HTTP, вы можете посмотреть, не достигните лимит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...