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

image.png

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 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.