PowerFlex 3.x L’appel de l’API REST « SetPassword » renvoie « 400 Bad Request »
Summary: Lors de l’utilisation de PowerShell pour interagir avec l’API REST VxFlexOS/PowerFlex, la fonction « setPassword » renvoie une « 400 bad request ». Cependant, d’autres fonctions fonctionnent correctement, telles que « resetPassword ». Scénario : Utilisez un code personnalisé pour définir le mot de passe des utilisateurs connectés avec la fonction « setPassword » de l’API REST. La passerelle VxFlexOS/PowerFlex renvoie un code HTML « 400 » de demande incorrect. Mais d’autres fonctions fonctionnent toujours sans erreur. ...
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
Dans les journaux ou dans la ligne de commande, quelque chose de similaire à ce qui suit affiche que « Le serveur distant a renvoyé une erreur : (400) Bad Request" :


Cause
Certaines fonctions qui ont des charges utiles de corps plus importantes, telles que « setPassword » (qui nécessite la valeur plus de l’objet oldPassword et la valeur de l’objet newPassword) nécessitent que l’en-tête inclue également le type de contenu « application/json » pour que l’API REST VxFlex interprète correctement l’appel post.
Resolution
Pour résoudre ce problème, fournissez le type de contenu avec la requête Web, par exemple, le code ci-dessous dans PowerShell nécessite l’ajout de « -ContentType « application/json » » à la méthode Invoke-WebRequest pour que la publication réussisse :
#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 même chose peut être faite à partir de Curl ou d’autres langages de programmation :
curl -v -k -X POST -H "Content-Type:application/json" ...
Versions affectées
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.