PowerFlex 3.x Volání rozhraní REST API "SetPassword" vrátí hodnotu "400 Bad Request".

Summary: Při použití prostředí PowerShell k interakci s řešením VxFlexOS/PowerFlex REST API vrátí funkce "setPassword" zprávu "400 bad request". Jiné funkce, například "resetPassword", však fungují správně. Scénář: Použijte vlastní kód k nastavení hesla přihlášených uživatelů pomocí funkce "setPassword" v rozhraní REST API. Brána VxFlexOS/PowerFlex vrátí chybný kód HTML požadavku "400". Ostatní funkce však stále fungují bez chyb. ...

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

V protokolech nebo v příkazovém řádku se zobrazí něco podobného následujícímu, že "Vzdálený server vrátil chybu: (400) Chybný požadavek":

image.png

Cause

Některé funkce s větší částí textu, například "setPassword" (která vyžaduje objekt oldPassword plus hodnota a objekt newPassword plus hodnota), vyžadují, aby záhlaví obsahovalo také typ obsahu "application/json", aby rozhraní VxFlex REST API správně interpretovalo volání.

Resolution

Chcete-li tento problém vyřešit, zadejte typ obsahu s webovým požadavkem, například následující kód v PowerShellu vyžaduje, aby byl příspěvek "-ContentType "application/json" přidaný do metody Invoke-WebRequest pro úspěšný příspěvek:

#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

Totéž lze provést z Curl nebo jiných programovacích jazyků:

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

 

Dotčené verze

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.