"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como obter autenticação NTLM com credenciais do sistema em solicitações HTTP Go?

Como obter autenticação NTLM com credenciais do sistema em solicitações HTTP Go?

Publicado em 2024-11-12
Navegar:590

How to Achieve NTLM Authentication with System Credentials in Go HTTP Requests?

Autenticação NTLM com credenciais do sistema em solicitações HTTP Go

Como desenvolvedor, você pode encontrar cenários em que precisa fazer solicitações HTTP e autenticar usando as credenciais do sistema do usuário que executa seu aplicativo. Em ambientes Windows, isso pode ser feito usando a autenticação NTLM (Negotiate Token Level Message). Embora existam soluções disponíveis em C# e Python, a implementação em Go é menos direta.

Solução com Go-ole

Depois de pesquisar, descobrimos que o A biblioteca go-ole fornece acesso à interface WinHTTPRequest, que pode ser utilizada para realizar autenticação NTLM com credenciais do sistema. Veja como fazer isso:

package main

import (
    "fmt"

    ole "github.com/go-ole/go-ole"
    "github.com/go-ole/go-ole/oleutil"
)

func main() {
    ole.CoInitialize(0)
    defer ole.CoUninitialize()
    unknown, _ := oleutil.CreateObject("WinHTTP.WinHTTPRequest.5.1")
    request, _ := unknown.QueryInterface(ole.IID_IDispatch)
    oleutil.CallMethod(request, "SetAutoLogonPolicy", 0)
    oleutil.CallMethod(request, "Open", "GET", "http://example.com", false)
    oleutil.CallMethod(request, "Send")
    resp := oleutil.MustGetProperty(request, "ResponseText")
    fmt.Println(resp.ToString())
}

Este código inicializa a biblioteca ole e cria uma instância WinHTTPRequest. O método SetAutoLogonPolicy é chamado para habilitar o uso de credenciais do sistema. Em seguida, a solicitação é enviada com os métodos Open e Send. Por fim, o texto de resposta é obtido usando a propriedade ResponseText.

Conclusão

Usando a biblioteca go-ole, você pode aproveitar a interface WinHTTPRequest para realizar a autenticação NTLM com o sistema credenciais em Go, fornecendo uma abordagem perfeita para solicitações HTTP em ambientes Windows.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3