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) Плохая просьба":

image.png

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 Software

Products

PowerFlex rack, PowerFlex Appliance, PowerFlex custom node
Article 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.