如何使用NTLM身份验证打开浏览器

时间:2019-10-15 08:52:19

标签: go

我正在尝试模拟浏览器,打开Intranet网址并获取状态代码401。如何使用ntl auth或登录名通过密码打开URL? 谢谢

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 :(得分:0)

  

如何使用ntl auth或登录名通过打开URL?谢谢
  1.抱歉,ntl是NTLM 2.服务器“透明地”对我进行身份验证

我将假定用户已根据AD域进行了身份验证。

首先-NTLM协议并不像例如基本认证。这是一个涉及某些系统/用户特定数据的多步骤协议。客户端和服务器需要在协商HTTP标头中交换一些挑战/答案数据。

我建议使用现成的库;例如go-ntlmsspgokrb5

注意:使用SPNEGO(HTTP上的NTLM)身份验证时,根据AD设置,如果用户/服务主体的角色过多,则协商HTTP标头可能会变得很大。如果您对HTTP标头有任何默认限制,则可能会看到未达到限制的情况。