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.
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