PowerFlex 3.x Der REST-API-Aufruf "SetPassword" gibt "400 Bad Request" zurück

Summary: Bei der Verwendung von PowerShell für die Interaktion mit der VxFlexOS/PowerFlex REST API gibt die Funktion "setPassword" eine "400 bad request" zurück. Andere Funktionen funktionieren jedoch einwandfrei, z. B. "resetPassword". Beispiel: Wenn Sie benutzerdefinierten Code verwenden, um das Kennwort der angemeldeten NutzerInnen mit der Funktion "setPassword" in der REST API festzulegen, gibt das VxFlexOS-/PowerFlex-Gateway eine ungültige Anforderung "400"-HTML-Code zurück. Andere Funktionen funktionieren jedoch weiterhin fehlerfrei. ...

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 den Protokollen oder in der Befehlszeile wird etwas ähnliches wie das Folgende angezeigt: "Der Remoteserver hat einen Fehler zurückgegeben: (400) Ungültige Anforderung":

image.png

Cause

Einige Funktionen mit größeren Textnutzlasten, z. B. "setPassword" (für die der Wert des altKennwort-Objekts und das neue Kennwort-Objekt plus erforderlich sind), erfordern, dass der Header auch den Inhaltstyp "application/json" enthält, damit die VxFlex REST API den POST-Aufruf korrekt interpretiert.

Resolution

Um dieses Problem zu beheben, stellen Sie den Inhaltstyp mit der Webanforderung bereit, z. B. erfordert der folgende Code in PowerShell den "-ContentType "application/json", der der Invoke-WebRequest-Methode hinzugefügt wird, damit der Beitrag erfolgreich ist:

#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

Das Gleiche kann von Curl oder anderen Programmiersprachen aus erledigt werden:

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

 

Betroffene Versionen

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.