Visualizzazione risultati 1 fino 10 di 10

Discussione: OAuth e REST API

  1. #1
    Guest

    Predefinito OAuth e REST API

    Non riesco a utilizzare la REST API di wordpress. Ho iniziato provando a prendere il Token con Postman, con 3 diverse plugin:
    - WP OAuth Server
    - JWT Authentication for WP-API
    - API Bearer Auth

    In nessun caso sono riuscito a fare l'iter per ottenere l'autenticazione. Non so se ho sbagliato qualcosa io, però con Twitter non ho mai avuto grossi problemi.


    Qualcuno può darmi qualche dritta, almeno sapere quale plugin funzione correttamente ?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Prova abilitando le connessioni server to server (da impostazioni).

    Ciao!

  3. #3
    Guest

    Predefinito

    Ho provato ma mi viene detto: "In questo momento non è stato possibile inviare l'SMS. Riprova più tardi.".


    Cmq, leggendo sul server to server dice anche che il dominio di google.com è nella lista Bianca, quindi ho provato anche con google script, ma ottengo sempre la stessa risposta 401 (unauthorized):

    Codice:
    function apibearerTest() {
      var url = "http://baxos.altervista.com/wp-json/api-bearer-auth/v1/login";
      
      var myPayload = {
          username: "ausiliario",
          password: "*****"
      };
      
      var params = {
        method: "POST",
        contentType: "application/x-www-form-urlencoded",
        payload: JSON.stringify(myPayload),
        muteHttpExceptions: true
      };
    
      var request = UrlFetchApp.getRequest(url, params);
      var response = UrlFetchApp.fetch(url, params);
      
      var statusCode = response.getResponseCode(); 
      var contentText = response.getContentText();
      var header = response.getHeaders();
      var headerToSource = response.getHeaders().toSource();
      var allHeader = response.getAllHeaders();
      var allHeaderToSource = response.getAllHeaders().toSource();
    }
    Ultima modifica di alemoppo : 03-09-2018 alle ore 21.49.31

  4. #4
    Guest

    Predefinito

    (La URL precedente era sbagliato ma non riesco più a correggere) il plugin semplicemente non funzione perché non si può accedere al punto di login:
    http://miosito.altervista.com/api-bearer-auth/v1/login

    Ottengo 404 NOT FOUND !!!!

    Il plugin risulta essere attivato poiché su tutti gli altri punti ottengo il messaggio che non sono autorizzato con 401.

    Quindi per quale motivo non si riesca ad accedere al punto /api-bearer-auth/v1/login ?

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Ho provato il primo plugin che hai indicato ( OAuth Server ), mi pare funzionare. Ho seguito questa pagina (ho fatto fino lo step 3 ottenendo):
    Codice:
    {"access_token":"ohek****************hs6","expires_in":3600,"token_type":"Bearer","scope":"basic","refresh_token":"bv********************ne"}
    Ma hai abilitato il plugin da "OAuth Server->Settings->OAuth Server Enabled"?

    p.s: sei riuscito alla fine ad abilitare le connessioni server to server?

    Comunque, ti lascio gli script con cui ho provato:
    Codice HTML:
    <html>
    <head>
    <title> Test login wp</title>
    </head>
    <body>
    
    <form action="https://nick.altervista.org/oauth/authorize?response_type=code&client_id=3mmhH**********************ziVFz&redirect_uri=https://nick.altervista.org/wp-content/cb.php" method="post">
    <input type="submit" value="Log In" \>
    </form>
    
    </body>
    </html>
    file cb.php (caricato tramite FTP nella cartella dove si trova l'ftp appena si apre (alterBlog: /wp-content/):
    Codice PHP:
    <?php

    $client_id
    = '3mmhH******************ziVFz';
    $client_secret = 'abg82*********************zA4pVD';
    $server_url = 'https://nick.altervista.org';

    $curl_post_data = array(
    'grant_type' => 'authorization_code',
    'code' => $_GET['code'],
    'redirect_uri' => 'https://nick.altervista.org/wp-content/cb.php',
    'client_id' => $client_id, // Only needed if server is running CGI
    'client_secret' => $client_secret // Only need if server is running CGI
    );

    $curl = curl_init( $server_url . '/oauth/token/' );

    // Uncomment if you want to use CLIENTID AND SECRET IN THE HEADER
    //curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    //curl_setopt($curl, CURLOPT_USERPWD, $client_id.':'.$client_secret); // Your credentials goes here
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $curl, CURLOPT_POST, true );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, $curl_post_data );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
    curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5' );
    curl_setopt( $curl, CURLOPT_REFERER, 'http://www.example.com/1' );

    $curl_response = curl_exec( $curl );
    curl_close( $curl );
    echo
    '<pre>';
    print_r( $curl_response );
    echo
    '</pre>';
    Ciao!
    Ultima modifica di alemoppo : 05-09-2018 alle ore 22.58.42

  6. #6
    Guest

    Predefinito

    Il Server to server lo ho abilitato (ache se però da google script non credo serva, visto che in lista Bianca).
    Ho provato diversi plugin, ed ho visto che molti non sono più aggiornati e si spreca solo tempo.
    Sono ritornato su WP OAUTH Server, sempre modalità basic, ora ottengo un 400 Bad Request, con Postman:
    {
    "error": "unauthorized_client",
    "error_description": "The grant type is unauthorized for this client_id"
    }

    Non capisco perché il client_id è corretto, credo che sia qualche altra cosa. Adesso proverò con altro metodo come in tua risposta, anche se il basic mi sembrava il più facile da testare e non mi va ancora...

  7. #7
    Guest

    Predefinito

    Ok, ho capito l'errore precedente, semplicemente il plugin WP OAUTH Server ha diversi metodi di autenticazione, ma il basic auth (su Postman), che nel plugin si chiama "User credentials" grant type, è disponibile solo nella versione a pagamento PRO. Quindi non posso utilizzarlo intanto.

    Ti ringrazio tanto, ho seguito il tuo esempio passp-passo (che riguarda il metodo Authorization Code, che invece è disponibile anche nella versione gratuita del plugin) e sono riuscito a ottenere il Token.

    Secondo te, è necessario usare HTTPS per questo plugin ? Perché ho letto che OAuth 2.0 non è tanto sicuro su HTTP, per questo esiste un plugin appostio che si chiama OAuth 1.0 Server, che invece dice sulla sua pagina, di essere sicuro anche su HTTP, proprio perché la versione 2.0 di OAuth ha delle complicazioni proprio su HTTP che la rendono poco sicura.

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Sinceramente non conoscevo nemmeno questo tipo di plugin.
    Da quanto ho capito consente di compiere operazioni "dall'esterno" nel blog. Quindi direi che è caldamente consigliato utilizzare HTTPS, perché in HTTP intercettando un pacchetto potenzialmente un malintenzionato può leggere i vari parametri (client_id, client_secret) e quindi comandarti il blog come vuole.

    Quindi, per funzionare funziona anche in HTTP, ma io ti consiglierei di utilizzarlo in HTTPS per quanto detto sopra.

    Non so come funziona OAuth 1.0, probabilmente ha un funzionamento di login: non inviando ogni volta i parametri probabilmente risulta (poco) più sicuro.

    Ciao!
    Ultima modifica di alemoppo : 09-09-2018 alle ore 23.26.22

  9. #9
    Guest

    Predefinito

    Per non perdere tempo ho attivato HTTPS (da quello che ho capito Oauth 2.0 è sicuro solo su HTTPS mentre Oauth 1.0a è sicuro anche su HTTP, ma ora avendo ormai trovato il modo di far funziare tutto con il plugin WP OAUTH Server (che implementa la RFC di Oauth 2.0), non volevo perdere altro tempo).


    Ho quindi aggiornato I link in cb.php e l'altro in html, con https://... per far funzionare il plugin ed ho ottenuto un nuovo token correttamente.
    Codice:
    {
     "access_token":"e2nuwxaokelo1zcxbbm3fdxbve5hh8mp8xb7adjq",
     "expires_in":946080000,
     "token_type":"Bearer",
     "scope":"basic",
     "refresh_token":"i1gzwlpmyapdibylgae9ceqjnqjwc3tntvfo2p9j"
    }
    Ora però ho fatto un po' di prove con il token così ottenuto ma non va più niente,
    esempio all'end point della WP OAUTH Server:
    Codice:
    https://baxos.altervista.org/oauth/me?access_token=e2nuwxaokelo1zcxbbm3fdxbve5hh8mp8xb7adjq
    Ottengo 400 Bad Request:
    Codice:
    {
        "error": "invalid_request",
        "error_description": "Invalid token",
        "error_uri": "https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-7.2"
    }

    Oppure se provo a creare un nuovo post con la WP REST API (https://baxos.altervista.org/wp-json/wp/v2/posts) ottengo sempre: 401 Unauthorized

    Codice:
    {
        "code": "rest_cannot_create",
        "message": "Non hai i permessi per  creare articoli con questo utente.",
        "data": {
            "status": 401
        }
    }
    Prima su HTTP tutte le chiamate alla REST API di WP andavano a buon fine.
    Ultima modifica di baxos : 11-09-2018 alle ore 21.48.51

  10. #10
    Guest

    Predefinito

    Mi auto rispondo da solo, perché ho già risolto, il problema era che avevo impostato una durata troppo lunga dell'access token, di 30 anni (946080000 secondi).

    Ho fatto diverse prove e ad esempio con 360000000 secondi (circa 11 anni), non ci sono problemi.

    Non ho trovato il limite in anni da nessuna parte, né so se è limitazione del RFC o del plugin WP OAUTH Server...

    Però mi sembra assurdo che uno debba ricordarsi ogni 11 anni di rinnovare un token, qualcosa mi sfugge (ad esempio a che serve il refresh token non mi è chiaro). Con HTTPS però ho risolto.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •