Page 2 of 2

Re: api forma23

Posted: Mon Dec 23, 2019 5:53 pm
by alfa24
Prova a sotituire:

if(!(new self())->checkAuthentication($auth_code)) {
return false;
}

con:

$_api_instance = new self();
if(!($_api_instance->checkAuthentication($auth_code))) {
return false;
}

Re: api forma23

Posted: Mon Dec 23, 2019 5:58 pm
by d.ravasco
Ancora nulla.
il var_dump restituisce questo messaggio
object(SimpleXMLElement)#1 (1) { ["error"]=> object(SimpleXMLElement)#2 (0) { } }
invece di
object(SimpleXMLElement)#1 (1) { ["error"]=> string(20) "Error: invalid user." }

Re: api forma23

Posted: Mon Dec 23, 2019 6:00 pm
by alfa24
Se provi ad attivare il debug intercetti qualche errore prima del var_dump?

Re: api forma23

Posted: Mon Dec 23, 2019 6:13 pm
by d.ravasco
sono già attive le istruzioni per il debug ma non intercetta nulla
error_reporting(E_ALL);
ini_set( 'display_errors', 1 );

cmq per oggi passo e vedo di continuare a fare qualche altro test nei prossimi giorni. Grazie per l'aiuto

Re: api forma23

Posted: Sun Feb 23, 2020 12:11 am
by mriva
È passato un po' di tempo dall'ultima risposta, ma visto che mi sono appena scontrato con questo bug, riporto la mia esperienza.

Il problema dell'autenticazione tramite token è che il codice di lms forma fa la checkAuthentication() anche sulla chiamata /api/auth/authenticate; ovviamente così non funziona perché il codice richiede di essere autenticati per fare l'autenticazione... è il cane che si morde la coda. In generale gli endpoint di autenticazione (quelli a cui inviare user e password) devono essere per ovvie ragioni pubbliche, o per lo meno non protette dallo stesso tipo di autenticazione che devono fornire.

Re: api forma23

Posted: Sun Feb 23, 2020 1:21 am
by mriva
La modifica che sto testando è passare (nel file 'api/lib/lib.api.php') da queste righe:

Code: Select all

static public function Execute($auth_code, $module, $function, $params) {

    if(!(new self())->checkAuthentication($auth_code)) {
        return false;
    }
    ...
a queste

Code: Select all

public static function Execute($auth_code, $module, $function, $params) {
    $api_call = "{$module}/{$function}";
    if ($api_call != 'auth/authenticate' && !(new self())->checkAuthentication($auth_code)) {
        return false;
    }
    ...