PowerFlex 3.x A chamada da API REST "SetPassword" retorna "400 Bad Request"

Summary: Ao usar o PowerShell para interagir com a API REST do VxFlexOS/PowerFlex, a função "setPassword" retorna uma solicitação "400 bad". No entanto, outras funções funcionam bem, como "resetPassword". Situação: Use o código personalizado para definir a senha dos usuários conectados com a função "setPassword" na API REST, o VxFlexOS/PowerFlex Gateway retorna um código HTML "400" de solicitação incorreta. Mas outras funções ainda funcionam sem erros. ...

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

Nos registros ou na linha de comando, algo semelhante ao seguinte mostrará que "O servidor remoto retornou um erro: (400) Pedido inválido":

image.png

Cause

Algumas funções que têm payloads de corpo maiores, como "setPassword" (que exige o objeto oldPassword plus value e o objeto newPassword plus value), exigem que o cabeçalho também inclua o tipo de conteúdo "application/json" para que a API REST do VxFlex interprete a pós-chamada corretamente.

Resolution

Para resolver esse problema, forneça o tipo de conteúdo com a Solicitação da Web, por exemplo, o código abaixo no PowerShell requer o "-ContentType "application/json" " adicionado ao método Invoke-WebRequest para que a postagem seja bem-sucedida":

#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

A mesma coisa pode ser feita a partir do Curl ou de outras linguagens de programação:

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

 

Versões afetadas

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.