Проверка подлинности Sharepoint с помощью Powershell: Вызов-WebRequest по сравнению с сетью.Веб-запрос

#powershell #authentication #post #sharepoint

Вопрос:

Я пытаюсь получить файлы cookie проверки подлинности Sharepoint с помощью Powershell. Я хочу сделать это с Net.WebRequest помощью обратной совместимости.

У меня уже есть средство получения токенов, и теперь я хочу использовать его для получения файлов cookie. Я протестировал его Invoke-WebRequest , и он отлично работает. Когда я пытаюсь использовать Net.WebRequest , я все время получаю ОТКАЗ. Я сравнил эти два метода на онлайн-сайте webhook, и запросы выглядят одинаково (или, по крайней мере, в параметрах, которые я вижу).

Вот рабочее решение:

 Invoke-WebRequest $href -Method POST -Body $token -Proxy $proxy_href -ProxyUseDefaultCredentials
 

Вот решение, которое я хочу использовать и которое не работает:

 $buffer = [byte[]][char[]]$token
[net.httpWebRequest] $req = [net.webRequest]::create($href)
$req.method = "POST"
$req.UserAgent = "Mozilla/5.0 (Windows NT; Windows NT 10.0; pl-PL) WindowsPowerShell/5.1.19041.906"
$req.Host = $sp_host
$req.ContentType = "application/x-www-form-urlencoded"
$req.Proxy = $proxy
$req_strm = $req.getRequestStream()
$req_strm.write($buffer, 0, $buffer.length)
$req_strm.flush()
$req_strm.close()
[net.httpWebResponse] $res = $req.getResponse()
$resst = $res.getResponseStream()
$sr = new-object IO.StreamReader($resst)
$result = $sr.ReadToEnd()
$res.close()
 

Я уже протестировал указание/удаление следующих параметров: Длина содержимого, Прием, Хост, Прокси, Агент пользователя и кодировка тела UTF8/ASCII — без успеха. Где же расхождение между этими двумя методами?