Autenticacion API Rest

FuturaSP

Gold Partner
Advanced Certified
Registrado
9 Feb 2021
Mensajes
137
@Alejandro_3CX buenos dias,
he estado buscando pero no veo en el foto ningún apartado específico para API Rest, igual es buen momento para crearlo.

A parte, tengo un pequeño problema que de momento no he podido solucionar:

Siguiendo la documentación de la API, cuando me autentico usando postman, me funciona correctamente, pero si lo hago mediante código PHP, obtengo el token, pero ese token no es válido.
Si uso el token que obtengo en postman en mi codigo php, me funciona bien, pero si uso el token obtenido en mi codigo php en postman, tampoco me funciona.

¿Qué puede estar pasando? ¿Alguna idea?
 
Quizá mostrando el código PHP y la invocación de Postman ayude a entender las diferencias....
 
POSTMAN

Query

{"SecurityCode":"","Password":"{{USER_PASS}}","Username":"{{USER_NUM}}"}

Query formato curl
curl --location 'https://test.my3cx.es:5001/webclient/api/Login/GetAccessToken' \
--header 'Content-Type: application/json' \
--data '{"SecurityCode":"","Password":"xxxxx","Username":"yy"}'

Respuesta
{
"Status": "AuthSuccess",
"Token": {
"token_type": "Bearer",
"expires_in": 60,
"access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxYXQiOjE3MjU1OTg2MTQsImlzcyI6ImZ1dHVyYXNlcnZpY2Vwcm92aWRlci5teTNjeC5lczo1MDAxIiwiYXVkIjoiL2FwaSJ9.ezahAi6Hz2dtzrleXMEWr2otM1jdGCJR0fef3O_pnpU2w_4qpUzKH5G0JRrT1uMyRZFrXjk83X-xZkqyBN12hw",
"refresh_token": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyva2VuIn0.GuWySfBxMBVPO0GIzmHvgd8qlYsTiNRLRrHZGyDjjd08F3bsoX_bWNYJi6BP0oC1q8MQhFBJ8mxQpJg03bZljA"
},
"TwoFactorAuth": null
}


PHP
Query

function authApi($base_uri,$username,$password){
$url = $base_uri . 'webclient/api/Login/GetAccessToken';

$data = array(
"SecurityCode" => "",
"Password" => $password,
"Username" => $username
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);

$response = curl_exec($ch);
$result = json_decode($response, true);
curl_close($ch);

return $result;
}

Contenido del query:
$url -> https://test.my3cx.es:5001/webclient/api/Login/GetAccessToken
$data (var_dump) -> { ["SecurityCode"]=> string(0) "" ["Password"]=> string(12) "xxxxx" ["Username"]=> string(2) "yy" }

Respuesta:

{"Status":"AuthSuccess","Token":{"token_type":"Bearer","expires_in":60,"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXJwcmlzZSJdLCJNYXhSb2xlIjoidXNlcnMiLCJuYmYiOjE3MjU1OTkwODYsImV4cCI6MTcyNTYwMjY4NiwiaWF0IjoxNzI1NTk5MDg2LCJpc3MiOiJmdXR1cmFzZXJ2aWNlcHJvdmlkZXIubXkzY3guZXM6NTAwMSIsImF1ZCI6Ii9hcGkifQ.72lzkzMKc4hUzZF9E3viwoYhvN7sCoWZY_11e1_wusG7qSZ2XPBB5e6iLoppmD-Z5k-ZMZBuSnqUeNoKdH9iVw","refresh_token":"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyODYsImlzcyI6ImZ1dHVyYXNlcnZpY2Vwcm92aWRlci5teTNjeC5lczo1MDAxIiwiYXVkIjoiL3Rva2VuIn0.5yg4frxho6Bo7mugUzqNQgM66VzjE2Z_z2Gwyc6kBme887KlvrRr6gBS1VGCFh03uUf1xiqQwqwTDHVqte3iGw"},"TwoFactorAuth":null}


PD: los token han sido alterados manualmente
 
Vale, el localizado el problema:

Si obtengo el token desde postman, el token contiene esto:
....
"MaxRole": "system_owners",
....

Si obtengo el token desde php, el token contiene esto:
....
"MaxRole": "users",
....


siendo la misma llamada, a la misma url, con el mismo usuario y el mismo pass...

por qué puede pasar esto?
 

Estadísticas del Foro

Temas
44.439
Mensajes
232.807
Miembros
78.338
Último miembro
neil.marsura