PowerFlex 3.x "SetPassword" REST API-kaldet returnerer "400 Bad Request"

Summary: Når du bruger Powershell til at interagere med VxFlexOS/PowerFlex REST API, returnerer funktionen "setPassword" en "400 bad request". Andre funktioner fungerer dog fint, såsom "resetPassword." Scenarie: Brug brugerdefineret kode til at indstille adgangskoden for brugere, der er logget på, med funktionen "setPassword" i REST API – VxFlexOS/PowerFlex Gateway returnerer en "400" HTML-kode for en dårlig anmodning. Men andre funktioner fungerer stadig uden fejl. ...

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

I logfilerne eller i kommandolinjen viser noget, der ligner følgende, at "Fjernserveren returnerede en fejl: (400) Dårlig anmodning":

image.png

Cause

Nogle funktioner, der har større kropsdata, såsom "setPassword" (som kræver oldPassword-objektet plus værdi og newPassword-objektet plus værdi), kræver, at overskriften også indeholder indholdstypen "application/json", for at VxFlex REST API kan fortolke efterkaldet korrekt.

Resolution

For at løse dette problem skal du angive indholdstypen med webanmodningen, f.eks. kræver nedenstående kode i PowerShell "-ContentType "application/json" ", der er føjet til Invoke-WebRequest-metoden, for at indlægget kan lykkes":

#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

Det samme kan gøres fra Curl eller andre programmeringssprog:

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

 

Påvirkede versioner

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.