NTLM-Authentifizierung mit Systemanmeldeinformationen in Go-HTTP-Anfragen
Als Entwickler stoßen Sie möglicherweise auf Szenarien, in denen Sie HTTP-Anfragen stellen und sich 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:
<code class="go">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()) }</code>
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.
Fazit
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.
Das obige ist der detaillierte Inhalt vonWie erreicht man eine NTLM-Authentifizierung mit Systemanmeldeinformationen in Go-HTTP-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!