NTLM-Authentifizierung mit Systemanmeldeinformationen in Go-HTTP-Anfragen
Als Entwickler stoßen Sie möglicherweise auf Szenarien, in denen Sie HTTP-Anfragen stellen und authentifizieren müssen Verwenden der Systemanmeldeinformationen des Benutzers, der Ihre Anwendung ausführt. In Windows-Umgebungen kann dies mithilfe der NTLM-Authentifizierung (Negotiate Token Level Message) erfolgen. Während Lösungen in C# und Python verfügbar sind, ist die Implementierung in Go weniger einfach.
Lösung mit Go-ole
Nach Recherchen haben wir herausgefunden, dass die Die go-ole-Bibliothek bietet Zugriff auf die WinHTTPRequest-Schnittstelle, die zur Durchführung der NTLM-Authentifizierung mit Systemanmeldeinformationen verwendet werden kann. So erreichen Sie dies:
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())
}
Dieser Code initialisiert die Ole-Bibliothek und erstellt eine WinHTTPRequest-Instanz. Die SetAutoLogonPolicy-Methode wird aufgerufen, um die Verwendung von Systemanmeldeinformationen zu ermöglichen. Anschließend wird die Anfrage mit den Methoden Open und Send gesendet. Schließlich wird der Antworttext mithilfe der ResponseText-Eigenschaft abgerufen.
Schlussfolgerung
Mit der Go-Ole-Bibliothek können Sie die WinHTTPRequest-Schnittstelle nutzen, um eine NTLM-Authentifizierung mit dem System durchzuführen Anmeldeinformationen in Go und bietet einen nahtlosen Ansatz für HTTP-Anfragen in Windows-Umgebungen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3