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

标签 go

我正在尝试模拟浏览器,打开 Intranet url 并获取状态码 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())
}

最佳答案

How to open url with ntl auth or login, pass? Thanks
1. Oh sorry, ntl is NTLM 2. Server authenticate me "transparently"



我将假设用户已针对 AD 域进行身份验证。

第一个 - NTLM协议(protocol)并不像例如那么简单基本认证。它是一个涉及一些系统/用户特定数据的多步骤协议(protocol)。客户端和服务器需要在协商 HTTP header 中交换一些质询/答案数据。

我建议使用开箱即用的库;例如 go-ntlmsspgokrb5 .

注意:使用 SPNEGO(NTLM over HTTP)身份验证时,根据 AD 设置,如果用户/服务主体的角色过多,协商 HTTP header 可能会变得非常大。如果您对 HTTP header 有任何默认限制,您可以查看是否未达到限制。

关于go - 如何使用 NTLM 身份验证打开浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390767/

相关文章:

go - 如何在 Go 服务器中设置 HTTP 预告片?

go - Cosmos SDK 帐户序列不匹配

json - 访问具有哈希结构的嵌套 JSON 文件

sql - SetConnMaxLifetime如何在golang database/sql上工作

go - 为什么golang类型实现sort.Interface时方法接收者不需要是指针?

go - 在Go中多次洗牌

regex - 解析正则表达式: invalid or unsupported Perl syntax: `?=` 时出错

string - 为什么简单的 Go 应用程序占用大量内存

http - 我可以在重定向请求时检查响应吗?

go - (Golang)JWT签名验证问题