我正在尝试模拟浏览器,打开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())
}
答案 0 :(得分:0)
如何使用ntl auth或登录名通过打开URL?谢谢
1.抱歉,ntl是NTLM 2.服务器“透明地”对我进行身份验证
我将假定用户已根据AD域进行了身份验证。
首先-NTLM协议并不像例如基本认证。这是一个涉及某些系统/用户特定数据的多步骤协议。客户端和服务器需要在协商HTTP标头中交换一些挑战/答案数据。
我建议使用现成的库;例如go-ntlmssp或gokrb5。
注意:使用SPNEGO(HTTP上的NTLM)身份验证时,根据AD设置,如果用户/服务主体的角色过多,则协商HTTP标头可能会变得很大。如果您对HTTP标头有任何默认限制,则可能会看到未达到限制的情况。