При использовании следующей команды curl я получаю ответ 200 OK, который предоставляет токен аутентификации, который мне нужен для будущих запросов. Тем не менее, когда я пытаюсь повторить то же самое в PowerShell с помощью метода invoke-rest, приведенного ниже, я не получаю никакого ответа.
Я попытался включить многословие, и он просто говорит, что возвращено 0 байт. Я также пытался использовать -Timeoutse c, и это не имеет значения. Я также проверил строку base64 для пользователя, и пароль тот же и правильный. Я также знаю, что использую API, потому что могу коснуться других конечных точек и получить 401 несанкционированный.
Я также пытался использовать POSTMan и использовать функцию, которая позволяет пропустить команду cURL, и она создаст для вас запрос, и я получу такой же пустой / нулевой ответ.
Я смог заставить его работать в Python также без проблем.
Буду очень признателен за помощь, поскольку я не уверен, что мне здесь не хватает.
Curl call (200 OK):
curl -qgsSkH --no-progress-bar --header "Authorization: Basic SDFLKJSLKDJFLKJWERFV3Fh1RHZjIyQl" -D auth.txt -F form=foo https://10.10.10.10:443/ENDPOINT/v6/auth/login -vvv**
Python Код, который также работает:
import requests
import base64
base_url = 'https://server.domain.com/ENDPOINT/v6/auth/login'
username = 'APIAccount'
password = 'PASSWORD' # Since only alphanumeric characters are alloowed, this should be an extra long password.
credentials = (username + ':' + password).encode('utf-8')
base64_encoded_credentials = base64.b64encode(credentials).decode('utf-8')
headers = {
'Authorization': 'Basic ' + base64_encoded_credentials
}
resp = requests.post(base_url, headers=headers, verify=False)
print(headers)
print('Status:', resp.status_code)
Код PowerShell (без вывода):
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$USER = "APIAccount"
$password = 'PASSWORD'
$HeaderAuth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $USER, $password)))
$SessionHeader = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$SessionHeader.Add('Authorization',('Basic {0}' -f $HeaderAuth))
$SessionHeader.Add('Accept','application/json')
$SessionHeader.Add('Content-Type','application/json')
$URL = "https://server.domain.com/ENDPOINT/v6/auth/login"
$APIResponse = Invoke-RestMethod -Method POST -Uri $URL -Headers $Sessionheader -Verbose -TimeoutSec 33