Аутентификация NTLM с использованием системных учетных данных в HTTP-запросах Go
Как разработчик, вы можете столкнуться со сценариями, в которых вам необходимо выполнять HTTP-запросы и проходить аутентификацию используя системные учетные данные пользователя, запускающего ваше приложение. В средах Windows это можно сделать с помощью аутентификации NTLM (сообщение на уровне токена согласования). Хотя существуют решения на C# и Python, реализация на Go менее проста.
Решение с помощью Go-ole
После исследования мы обнаружили, что Библиотека go-ole предоставляет доступ к интерфейсу WinHTTPRequest, который можно использовать для выполнения аутентификации NTLM с использованием системных учетных данных. Вот как этого добиться:
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())
}
Этот код инициализирует библиотеку ole и создает экземпляр WinHTTPRequest. Метод SetAutoLogonPolicy вызывается, чтобы разрешить использование системных учетных данных. Затем запрос отправляется с помощью методов Open и Send. Наконец, текст ответа получается с использованием свойства ResponseText.
Заключение
Используя библиотеку go-ole, вы можете использовать интерфейс WinHTTPRequest для выполнения аутентификации NTLM с системой. учетные данные в Go, обеспечивая удобный подход к HTTP-запросам в средах Windows.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3