«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как добиться аутентификации NTLM с использованием системных учетных данных в HTTP-запросах Go?

Как добиться аутентификации NTLM с использованием системных учетных данных в HTTP-запросах Go?

Опубликовано 12 ноября 2024 г.
Просматривать:671

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

Аутентификация 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