Authentification NTLM avec 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 :
<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>
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 une authentification NTLM avec le système informations d'identification dans Go, offrant une approche transparente pour les requêtes HTTP dans les environnements Windows.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!