Visualizzazione risultati 1 fino 11 di 11
Like Tree2Likes
  • 2 Post By mzanella

Discussione: È possibile installare OAuth o JWT?

  1. #1
    Guest

    Predefinito È possibile installare OAuth o JWT?

    Buongiorno,
    Stavo cercando di creare le mie API per login e registrazione e, per ovvi motivi di sicurezza, volevo implementare una soluzione con token di autorizzazione con OAuth oppure JWT.
    Non so però come posso installarli nel mio sito, perchè tutte le guide chiedono di utilizzare Compose. Qualcuno sa come fare su altervista, senza dover installare Wordpress ma semplicemente in PHP?

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    È possibile realizzare un sistema basato su OAuth e o JWT, tuttavia queste sono tecnologie, non librerie o framework da installare.

    Probabilmente ti stai riferendo a librerie specifiche realizzate da qualcuno, in quel caso i requisiti delle singole librerie possono essere soddisfacibili o meno su AlterVista. Tipicamente i requisiti non sono particolarmente restrittivi, nella maggior parte dei casi non ci sono problemi. Per seguire la guida di cui parli dovresti installare Composer in uno spazio di sviluppo locale, quindi caricare il progetto su AlterVista tramite FTP una volta completato. In alternativa puoi cercare librerie che consentano l'installazione manuale senza Composer (di fatto quest'ultimo è "solo" un gestore delle dipendenze che scarica automaticamente per te i file necessari da repository come GitHub).

    C'è anche la possibilità di scrivere da zero un sistema che usi oAuth o JWT ma, a meno che tu non lo stia facendo di proposito come esercizio, non è una strada raccomandabile.

    I suggerimenti che do più spesso:


  3. #3
    Guest

    Predefinito

    Grazie mille per le delucidazioni, ho una conoscenza piuttosto basilare di PHP e sto facendo questo come esercizio, ma anche per applicarlo ad un futuro progetto se riesco, quindi non vorrei addentrarmi nello scrivere da zero un mio sistema, perchè non avrei le stesse garanzie di sicurezza.

    Tornando alla domanda del topic, si, mi sto riferendo ad una delle librerie indicate dal sito JWT.io stesso.
    Per quanto riguarda php, il sito rimanda a librerie pubblicate su GitHub. Mi chiedevo se posso direttamente copiare il contenuto della cartella "src" di una di queste librerie in una mia cartella del server altervista e se poi potrò utilizzare le classi della libreria nel mio codice (magari utilizzando una funzione "import", come con Java?)

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Mi chiedevo se posso direttamente copiare il contenuto della cartella "src" di una di queste librerie in una mia cartella del server altervista e se poi potrò utilizzare le classi della libreria nel mio codice (magari utilizzando una funzione "import", come con Java?)
    Sì, in pratica faresti manualmente ciò che Composer realizza in automatico. L'unica piccola seccatura è che non avrai a disposizione l'autoloader creato da Composer, dovrai quindi inserire manualmente alcuni require_once nelle pagine.

    Normalmente ci sarebbero anche altri effetti collaterali nel seguire questo approccio, in particolare il fatto che dovresti installare manualmente anche tutte le dipendenze della libreria. In questo caso, però, sei fortunato: php-jwt non ha alcuna dipendenza da installare !

    I suggerimenti che do più spesso:


  5. #5
    Guest

    Predefinito

    Si, infatti ho notato nel source code della libreria in questione che non c'è alcuna dipendenza.
    Probabilmente non ho però capito come effettuare l'import.

    Praticamente ho il mio script Login.php nella cartella API/Users.
    Il source code della libreria l'ho invece copiato nella cartella API/JWT

    All'inizio di Login.php ho inserito le seguenti righe di codice:
    require_once (dirname(__DIR__)."/JWT/JWT.php");
    require_once (dirname(__DIR__)."/JWT/TokenDecoded.php");
    require_once (dirname(__DIR__)."/JWT/TokenEncoded.php");
    E quando poi all'interno di Login.php cerco di inizializzare un nuovo TokenDecoded ottengo l'errore
    Fatal error: Uncaught Error: Class 'TokenDecoded' not found in Login.php
    Quindi presumo di non eseguire l'import correttamente.
    Potresti indicarmi come va fatto?

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Puoi provare con
    Codice PHP:
    require_once __DIR__ . '/../JWT/JWT.php';
    require_once
    __DIR__ . '/../JWT/TokenDecoded.php';
    require_once
    __DIR__ . '/../JWT/TokenEncoded.php';
    in Login.php. In alternativa credo che anche
    Codice PHP:
    require_once dirname(__FILE__) . '/JWT/JWT.php';
    require_once
    dirname(__FILE__) . '/JWT/TokenDecoded.php';
    require_once
    dirname(__FILE__) . '/JWT/TokenEncoded.php';
    dia il risultato sperato.

    Se non lo hai già fatto verifica prima che JWT.php e gli altri siano nella cartella corretta, e che non siano state copiate per sbaglio cartelle intermedie come src.
    Se non dovesse funzionare, prova a utilizzare
    Codice PHP:
    echo __DIR__ . '/../JWT/JWT.php';
    per valutare il percorso calcolato e capire cosa non va.

    I suggerimenti che do più spesso:


  7. #7
    Guest

    Predefinito

    [code]
    Codice PHP:
    echo dirname(__DIR__) . '/JWT/JWT.php';
    Questo mi restituisce la corretta path del file, quindi sto utilizzando

    Codice PHP:
    require_once dirname(__DIR__) . '/JWT/JWT.php';
    require_once
    dirname(__DIR__) . '/JWT/TokenDecoded.php';
    require_once
    dirname(__DIR__) . '/JWT/TokenEncoded.php';
    Ma ricevo comunque l'errore
    Uncaught Error: Class 'TokenDecoded' not found in /membri/fantasports/API/Users/Login.php:33
    alla chiamata di TokenDecoded.

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Stai utilizzando l'FQN della classe, o in alternativa utilizzando i namespace opportuni?
    Dal messaggio d'errore sembra che tu stia usando solo il nome della classe, senza namespace.

    I suggerimenti che do più spesso:


  9. #9
    Guest

    Predefinito

    Aggiungendo
    Codice PHP:
    use Nowakowskir\JWT;
    use
    Nowakowskir\TokenDecoded;
    use
    Nowakowskir\TokenEncoded;
    Ottengo l'errore
    Fatal error: Uncaught Error: Class 'Nowakowskir\TokenDecoded' not found in /membri/fantasports/API/Users/Login.php:36 Stack trace: #0 /membri/fantasports/API/Users/Login.php(28): retrieveJSON('', '', '', 'This user doesn...', 400) #1 {main} thrown in /membri/fantasports/API/Users/Login.php on line 36

  10. #10
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,252

    Predefinito

    Salve,
    lei ha menzionato all'inzio, nel messaggio n°3:
    Citazione Originalmente inviato da fantasports Visualizza messaggio
    Praticamente ho il mio script Login.php nella cartella API/Users.
    Il source code della libreria l'ho invece copiato nella cartella API/JWT
    Cosa centra quindi Nowakowskir?

    Il percorso corretto dovrebbe essere:
    Codice PHP:
    use API\JWT\JWT;
    use
    API\JWT\TokenDecoded;
    use
    API\JWT\TokenEncoded;
    Nella documentazione su GitHub, viene fatto un esempio con Nowakowskir per l'installazione del pacchetto tramite composer. Però composer non può essere usato su AlterVista.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 19-03-2021 alle ore 03.11.34

  11. #11
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Cosa centra quindi Nowakowskir?

    Il percorso corretto dovrebbe essere: [...]
    Nowakowskir è il namespace utilizzato dalla libreria, si può vedere per esempio in TokenDecoded.php. La direttiva use serve rendere disponibile un FQN, non un percorso, quindi è corretto utilizzare Nowakowskir al posto di API.

    Quello che non va bene è il nome utilizzato, bisogna che l'FQN sia corretto:
    Codice PHP:
    use \Nowakowskir\JWT\JWT;
    use \
    Nowakowskir\JWT\TokenDecoded;
    use \
    Nowakowskir\JWT\TokenEncoded;
    use \
    Nowakowskir\JWT\Base64Url;
    use \
    Nowakowskir\JWT\Validation;
    Questi FQN sono costruiti partendo dal namespace globale /, aggiungendo quello dichiarato nei file sorgenti Nowakowskir\JWT e i nomi delle classi. Gli ultimi due use sono necessari anche se non utilizzi direttamente quelle classi, in quanto queste sono usate internamente dalle altre (il cui codice, assumendo di avere a disposizione un autoloader, non importa il relativo codice).

    PS: Benché non sia possibile usare Composer direttamente in un web host, nulla vieta di usarlo in locale per installare tutti i file del progetto, incluse le relative dipendenze e gli autoloader, per poi caricarli su AlterVista. Utile per evitare problemi come quelli visti qui.
    Ultima modifica di mzanella : 19-03-2021 alle ore 09.54.43
    GraphOGLRisorse and darbula like this.

    I suggerimenti che do più spesso:


Regole di scrittura

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