Как мне конвертировать curl в powershell - PullRequest
0 голосов
/ 13 июня 2019

Как мне преобразовать эту команду curl в powershell? Это работает отлично, используя curl, однако в powershell я получаю 401 несанкционированный. Я перепробовал все, что мог придумать. Этот код может быть выполнен только внутри определенной среды. я пытаюсь передать cookie, который, как я знаю, действителен в заголовке второго. Первый запрос работает хорошо, второй запрос, который означает возврат json, не работает. Вместо этого возвращает 401

Команда требует куки для аутентификации

curl.exe -vu SuperGabriel:SuperGabriel@2019 -X POST -H "X-Application: 3rdParty" https://webadmin.td90.centile-dev.com/restletrouter/v1/service/Login --insecure
curl.exe -v -H "Cookie: thirdParty_SESSIONID=6483556424564819468" -H "X- 
               Application: 3rdParty" https://webadmin.td90.centile-dev.com/restletrouter/v1/3rdParty/AdmtiveDomain --insecure
curl.exe -v -H "Cookie: thirdParty_SESSIONID=1312545750448673312" -H "X-Application: 3rdParty" https://webadmin.td90.centile-dev.com/restletrouter/v1/3rdParty/CallRecord/0.106.?day=20190301 -k --insecure -o
"C:\Users\stephenm\Documents\test.csv"

Вот мой код powershell.

add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
        ServicePoint srvPoint, X509Certificate certificate,
        WebRequest request, int certificateProblem) {
        return true;
    }
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object 
TrustAllCertsPolicy
$user = "SuperGabriel"
$pass = "SuperGabriel@2019" 
$pair = "$($user):$($pass)"

$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))

$basicAuthValue = "Basic $encodedCreds"

$headers = @{
"Authorization" = $basicAuthValue
"X-Application" = "3rdParty"
}



 $login = Invoke-WebRequest -Uri https://webadmin.td90.centile-dev.com/restletrouter/v1/service/Login  -Headers $headers  -Method Post 


$headers = @{
"Authorization" = $basicAuthValue
"X-Application" = "3rdParty"
"Cookie" ="thirdParty_SESSIONID=4436753218874838616"
"Content-Type" = "application/json"
}


try
{
$admtiveDomains = Invoke-WebRequest -Uri https://webadmin.td90.centile- 
dev.com/restletrouter/v1/3rdParty/AdmtiveDomain -Headers $headers  -Method 
Get

}catch{
   echo $ErrorMessage = $_.Exception.Message

}

большое спасибо

1 Ответ

0 голосов
/ 13 июня 2019

Возможно ли вам сначала получить токен, который затем нужно преобразовать в строку base64?

$uri = 'https://webadmin.td90.centile-dev.com/restletrouter/v1/service/Login'
$body = @{ username = 'SuperGabriel'; password = 'SuperGabriel@2019' }
$bodyjson = $body | convertTo-Json
$ctype = "application/json"
$token = invoke-restmethod -uri $uri -method POST -body $bodyjson -contenttype $ctype

Я не знаю, какой объект $token вернется, но вы бы по существузатем конвертируйте возвращенную строку и продолжайте оттуда.

$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($token))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...