通过 Powershell 进行 Sharepoint 身份验证:Invoke-WebRequest 与 Net.WebRequest

时间:2021-05-24 11:05:26

标签: powershell authentication post sharepoint

我正在尝试通过 Powershell 获取 Sharepoint 身份验证 cookie。由于向后兼容,我想用 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 编码 - 没有成功。这两种方法的差异在哪里?

0 个答案:

没有答案