"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo lograr la autenticación NTLM con credenciales del sistema en solicitudes Go HTTP?

¿Cómo lograr la autenticación NTLM con credenciales del sistema en solicitudes Go HTTP?

Publicado el 2024-11-12
Navegar:152

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

Autenticación NTLM con credenciales del sistema en solicitudes Go HTTP

Como desarrollador, es posible que se encuentre con escenarios en los que necesite realizar solicitudes HTTP y autenticarse utilizando las credenciales del sistema del usuario que ejecuta su aplicación. En entornos Windows, esto se puede hacer mediante la autenticación NTLM (Negotiate Token Level Message). Si bien hay soluciones disponibles en C# y Python, la implementación en Go es menos sencilla.

Solución con Go-ole

Después de investigar, descubrimos que La biblioteca go-ole proporciona acceso a la interfaz WinHTTPRequest, que se puede utilizar para realizar la autenticación NTLM con las credenciales del sistema. Aquí se explica cómo lograr esto:

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 la biblioteca ole y crea una instancia de WinHTTPRequest. Se llama al método SetAutoLogonPolicy para habilitar el uso de credenciales del sistema. Luego, la solicitud se envía con los métodos Abrir y Enviar. Finalmente, el texto de respuesta se obtiene utilizando la propiedad ResponseText.

Conclusión

Utilizando la biblioteca go-ole, puede aprovechar la interfaz WinHTTPRequest para realizar la autenticación NTLM con el sistema. credenciales en Go, lo que proporciona un enfoque fluido para solicitudes HTTP en entornos Windows.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3