PowerFlex 3.x Вызов API-интерфейса REST «SetPassword» возвращает «400 недопустимый запрос».
Summary: При использовании PowerShell для взаимодействия с VxFlexOS/PowerFlex REST API функция setPassword возвращает неверный запрос 400. Однако другие функции, такие как «resetPassword», работают нормально. Сценарий: Используйте пользовательский код для установки пароля вошедшего в систему пользователя с функцией «setPassword» в API-интерфейсе REST, шлюз VxFlexOS/PowerFlex вернет неверный HTML-код запроса «400». Но другие функции все равно работают без ошибок. ...
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
В журналах или в командной строке будет отображаться что-то похожее на следующее: «Удаленный сервер вернул ошибку: (400) Плохая просьба":


Cause
Некоторые функции с большими полезными данными, такие как «setPassword» (для которой требуются объект oldPassword plus value и объект newPassword plus value), требуют, чтобы заголовок также включал тип содержимого «application/json», чтобы API-интерфейс REST VxFlex правильно интерпретировал вызов post.
Resolution
Чтобы решить эту проблему, укажите тип содержимого в веб-запросе, например, приведенный ниже код в PowerShell требует, чтобы метод Invoke-WebRequest был добавлен в метод Invoke-WebRequest для успешного выполнения публикации:
#format the user/pw hash in BASE64 to get it parsed by REST
$head = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("admin:Scaleio1234"))}
$head
#get token for authorization.
$r = Invoke-WebRequest -Uri https://192.168.199.76/api/login -Method Get -Headers $head -UseBasicParsing
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $r.content.replace('"','')))
$header = @{'Authorization' = "Basic $token"}
$payload2 = @{
oldPassword = 'Scaleio1234'
newPassword = 'Scaleio123'
}
$body2 = Convertto-JSON -InputObject $payload2
Invoke-WebRequest -Uri https://192.168.199.76/api/instances/User/action/setPassword -Headers $header -Method Post -ContentType "application/json" -Body $body2
То же самое можно сделать из Curl или других языков программирования:
curl -v -k -X POST -H "Content-Type:application/json" ...
Затронутые версии
PowerFlex 3.x
Affected Products
PowerFlex SoftwareProducts
PowerFlex rack, PowerFlex Appliance, PowerFlex custom nodeArticle Properties
Article Number: 000194607
Article Type: Solution
Last Modified: 14 Apr 2025
Version: 2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.