Heim >Backend-Entwicklung >Golang >Wie erreicht man eine NTLM-Authentifizierung mit Systemanmeldeinformationen in Go-HTTP-Anfragen?

Wie erreicht man eine NTLM-Authentifizierung mit Systemanmeldeinformationen in Go-HTTP-Anfragen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 02:43:291087Durchsuche

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn