PowerFlex 3.x REST API-anropet "SetPassword" returnerar "400 Bad Request"

Summary: När du använder Powershell för att interagera med VxFlexOS/PowerFlex REST API returnerar funktionen "setPassword" en "400 felaktig begäran". Andra funktioner fungerar dock bra, till exempel "resetPassword". Scenario: Använd anpassad kod för att ställa in den inloggade användarens lösenord med funktionen "setPassword" i REST API. VxFlexOS/PowerFlex Gateway returnerar HTML-koden "400" för felaktig begäran. Men andra funktioner fungerar fortfarande utan fel. ...

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 loggarna eller på kommandoraden visar något som liknar följande att "Fjärrservern returnerade ett fel: (400) Felaktig begäran":

image.png

Cause

Vissa funktioner som har större brödtextnyttolaster, till exempel "setPassword" (som kräver oldPassword-objektet plus value och newPassword-objektet plus value) kräver att rubriken även innehåller innehållstypen "application/json" för VxFlex REST API för att post-anropet ska tolkas korrekt.

Resolution

För att lösa det här problemet anger du innehållstypen med webbbegäran, till exempel kräver koden nedan i PowerShell att "-ContentType "application/json" läggs till i Invoke-WebRequest metoden för att inlägget ska lyckas":

#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

Samma sak kan göras från Curl eller andra programmeringsspråk:

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

 

Versioner som påverkas

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.