Powershell API访问Cookie凭据

时间:2017-07-05 16:35:39

标签: api powershell cookies networkcredentials

我有一个PowerShell脚本,我用它来查询API。该脚本工作并提供我需要的输出。但是,我对缓存凭据感到担心。 由于某种原因,即使我使用不正确的登录,脚本仍然运行。我对API有一些访问权限。这种情况是,一旦使用了不正确的帐户,脚本仍然有效,似乎使用了最后一个有效的帐户。

例如,我首先使用正确的帐户" Account1"和API的脚本/访问工作。 当我尝试使用" Account2"并故意传递错误的密码,脚本/访问API仍然有效。即使我关闭并重新打开另一个PowerShell控制台也是如此。清除最后一个帐户的唯一方法是清除IE Cookies和Temp Internet文件,所以我的猜测是问题在于那里。如果可能的话,我不想在每次脚本运行时清除所有cookie或Temp文件。有没有办法只清除与脚本/ api访问相关的cookie / temp文件?或者也许在脚本上添加一些内容以便不创建cookie / temp,但仍然允许API访问工作? 以下是我使用的脚本的一部分。

$SecureUN = "Some Secure account"
$UNkey = "Some UNkey"
$UN = $SecureUN | ConvertTo-SecureString -Key $UNkey
$UNBSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($UN)
$UnsecureUN = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($UNBSTR)
$SecurePW = "Some Secure password"
$PWkey = "Some PWKey"
$PW = $SecurePW | ConvertTo-SecureString -Key $PWkey
$PWBSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($PW)
$base64 = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($('{0}:{1}' -f [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($UNBSTR), [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($PWBSTR))))
$basicAuthValue = "Basic $base64"
$Query = "WebURL"
$Http_Request = New-Object -ComObject Msxml2.XMLHTTP
$Http_Request.open('GET', $QueryIncident, $false)
$Http_Request.setRequestHeader("Authorization", $basicAuthValue)
$Http_Request.setRequestHeader("Accept", "application/vnd.webssite.v1+xml")
$Http_Request.setRequestHeader("Connection", "Keep-Alive")
$Http_Request.send()
$RequestStatus = $Http_Request.StatusText
Write-Host "Request Status: $RequestStatus"

API输出是几页,每页最多允许100个项目,所以我必须多次重复查询,直到所有页面都完成。

X-Current-Page: 1
X-Per-Page: 100
X-Total-Count: 5783
X-Total-Pages: 58

这与RequestHeader("Connection", "Keep-Alive")有关吗?该脚本每天每小时运行一次。

0 个答案:

没有答案