Authentification NTLM avec les informations d'identification système dans les requêtes HTTP Go
En tant que développeur, vous pouvez rencontrer des scénarios dans lesquels vous devez effectuer des requêtes HTTP et vous authentifier en utilisant les informations d'identification système de l'utilisateur exécutant votre application. Dans les environnements Windows, cela peut être effectué à l'aide de l'authentification NTLM (Négociation Token Level Message). Bien qu'il existe des solutions disponibles en C# et Python, l'implémentation dans Go est moins simple.
Solution avec Go-ole
Après des recherches, nous avons constaté que le La bibliothèque go-ole donne accès à l'interface WinHTTPRequest, qui peut être utilisée pour effectuer une authentification NTLM avec les informations d'identification du système. Voici comment y parvenir :
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())
}
Ce code initialise la bibliothèque ole et crée une instance WinHTTPRequest. La méthode SetAutoLogonPolicy est appelée pour activer l'utilisation des informations d'identification du système. Ensuite, la requête est envoyée avec les méthodes Open et Send. Enfin, le texte de la réponse est obtenu à l'aide de la propriété ResponseText.
Conclusion
À l'aide de la bibliothèque go-ole, vous pouvez exploiter l'interface WinHTTPRequest pour effectuer l'authentification NTLM avec le système. informations d'identification dans Go, offrant une approche transparente pour les requêtes HTTP dans les environnements Windows.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3