PowerFlex 3.x De REST API-aanroep "setPassword" retourneert "400 slecht verzoek"

Summary: Tijdens het gebruik van Powershell om te communiceren met de VxFlexOS/PowerFlex REST API, retourneert de functie "setPassword" een "400 bad request". Andere functies werken echter prima, zoals 'resetPassword'. Scenario: Gebruik aangepaste code om het wachtwoord van de aangemelde gebruiker in te stellen met de functie "setPassword" in de REST API. De VxFlexOS/PowerFlex Gateway retourneert een "400" HTML-code voor een slechte aanvraag. Maar andere functies werken nog steeds foutloos. ...

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

In de logboeken of in de opdrachtregel zal iets vergelijkbaars met het volgende worden weergegeven dat "De externe server heeft een fout geretourneerd: (400) Ongeldig verzoek":

image.png

Cause

Sommige functies met grotere body-payloads, zoals "setPassword" (waarvoor het oldPassword-object plus waarde en newPassword-object plus waarde nodig zijn) vereisen dat de header ook het inhoudstype "application/json" bevat zodat de VxFlex REST API de post-aanroep correct kan interpreteren.

Resolution

Om dit probleem op te lossen, levert u het inhoudstype op met de webaanvraag, bijvoorbeeld de onderstaande code in PowerShell vereist dat het "-ContentType "application/json" " wordt toegevoegd aan de Invoke-WebRequest-methode om het bericht te laten slagen":

#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

Hetzelfde kan worden gedaan vanuit Curl of andere programmeertalen:

curl -v -k -X POST -H "Content-Type:application/json" ...

 

Versies waarop dit van toepassing is

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.