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":


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 SoftwareProducts
PowerFlex rack, PowerFlex Appliance, PowerFlex custom nodeArticle 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.