PowerFlex 3.x Виклик REST API "SetPassword" повертає "400 поганих запитів"

Summary: Під час використання Powershell для взаємодії з API VxFlexOS/PowerFlex REST функція "setPassword" повертає "400 поганих запитів". Однак інші функції працюють нормально, наприклад "resetPassword". Сценарій: Використовуйте спеціальний код для встановлення пароля користувача, який увійшов у систему, за допомогою функції «setPassword» у REST API, шлюз 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 плюс значення та об'єкт newPassword плюс значення), вимагають, щоб заголовок також включав тип вмісту "application/json" для VxFlex REST API для правильної інтерпретації виклику повідомлення.

Resolution

Щоб вирішити цю проблему, надайте тип вмісту з веб-запитом, наприклад, наведений нижче код у PowerShell вимагає додавання "-ContentType "application/json" до методу 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.