PowerFlex 3.x La chiamata API REST "SetPassword" restituisce "400 Bad Request"
Summary: Durante l'utilizzo di Powershell per interagire con l'API REST VxFlexOS/PowerFlex, la funzione "setPassword" restituisce una "400 bad request". Tuttavia, altre funzioni funzionano correttamente, ad esempio "resetPassword". Scenario: Utilizzare il codice personalizzato per impostare la password degli utenti che hanno effettuato l'accesso con la funzione "setPassword" nell'API REST. VxFlexOS/PowerFlex Gateway restituisce un codice HTML "400" di richiesta errata. Ma altre funzioni funzionano ancora senza errori. ...
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
Nei log o nella riga di comando qualcosa di simile al seguente mostrerà che "Il server remoto ha restituito un errore: (400) Richiesta errata":


Cause
Alcune funzioni con payload del corpo più grandi, ad esempio "setPassword" (che richiede l'oggetto oldPassword più valore e l'oggetto più valore newPassword) richiedono che l'intestazione includa anche il tipo di contenuto "application/json" per l'API REST VxFlex per interpretare correttamente la chiamata post-chiamata.
Resolution
Per risolvere questo problema, fornire il tipo di contenuto con la richiesta Web, ad esempio il codice seguente in PowerShell richiede l'aggiunta di "-ContentType "application/json" al metodo Invoke-WebRequest affinché il post venga eseguito correttamente":
#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
La stessa cosa può essere fatta da Curl o da altri linguaggi di programmazione:
curl -v -k -X POST -H "Content-Type:application/json" ...
Versioni interessate
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.