Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

Autenticazione e autorizzazione utilizzando Auth0 in PHP

by
Difficulty:IntermediateLength:LongLanguages:

Italian (Italiano) translation by Francesco (you can also view the original English article)

In questo articolo, esploreremo il servizio Auth0, che fornisce l'autenticazione e l'autorizzazione come servizio. Auth0 consente di impostare l'autenticazione di base e funzionalità di autorizzazioni per le app in un batter d'occhio.

Che cosa è Auth0?

Auth0 è uno strumento di autenticazione come servizio che rende l'implementazione di funzionalità di autenticazione nel vostro sito una brezza. Se hai costruito un app e desideri solo esternalizzare le funzionalità di autenticazione e autorizzazione, si dovrebbe considerare il servizio Auth0.

Permettetemi di riepilogare velocemente quello che Auth0 ha da offrire:

  • Single sign-on
  • autenticazione a più fattori
  • account di accesso senza password
  • gestione degli utenti
  • e molto altro ancora

In questo articolo, andremo attraverso un paio di metodi single sign-on che è possibile implementare nelle tue applicazioni web al fine di sfruttare le funzionalità di autenticazione fornite dal servizio Auth0.

Nella prima metà di questo articolo, esploreremo come impostare funzionalità di autenticazione di base lato server in una web app PHP. Nella seconda metà, ti spiego come si potrebbero proteggere le vostre API personalizzate impostando l'autorizzazione OAuth utilizzando il servizio di Auth0.

Integrazione di autenticazione sul lato server

In questa sezione vedremo come rapidamente si potrebbe impostare l'autenticazione di base per applicazioni web lato server utilizzando Auth0. Infatti, il team di Auth0 già fornisce un utile esempio di GitHub che illustra esempi di base, in modo che useremo invece di reinventare la ruota.

Prima di procedere, assicurarsi di installare composer che verrà utilizzato per installare l'SDK di Auth0 utilizzando il file composer.json. Inoltre, se si desidera seguire gli esempi in questo articolo, andare avanti e creare un account gratuito con Auth0.

Impostare il progetto

Andiamo avanti e cloniamo il progetto di esempio.

Andare avanti con l'esecuzione del comando composer install per installare le dipendenze.

In base al file composer.json, dovrebbe aver installato i pacchetti vlucas/phpdotenv e auth0/auth0-php.

La libreria vlucas/phpdotenv viene utilizzata per inizializzare le variabili di ambiente dal file .env. Quindi, consente di separare la configurazione dal codice che cambia tra gli ambienti.

D'altra parte, il pacchetto di auth0/auth0-php è quello che ci aiuterà a impostare la pagina di autorizzazione nella nostra applicazione.

Successivamente, impostare la configurazione per la nostra applicazione nel file .env. Andare avanti e creare il file .env copiandolo dai file .env.example di esempio.

Contiene i valori di configurazione che verranno utilizzati dalla libreria Auth0.

Si dovrebbe essere in grado di trovare la maggior parte delle impostazioni in Applicazioni > Default App > Impostazioni sul cruscotto Auth0. Siete pregati di notare che sto utilizzando l'applicazione predefinita creato dal sistema. Naturalmente, si potrebbe andare avanti e creare una nuova applicazione se si desidera farlo.

AUTH0_CALLBACK_URL è l'URL dell'applicazione dove Auth0 reindirizzerà gli utenti dopo il login e logout. Il valore impostato in questo campo deve essere configurato sotto gli URL di Callback ammessi sotto le impostazioni dell'applicazione sul cruscotto Auth0.

Troverete tre file principali che implementano la maggior parte della logica di autenticazione.

  • index.php: questa è la pagina principale che Visualizza il pulsante di login o logout basato sullo stato dell'utente.
  • login.php: questo script verrà avviato quando si fa clic sul pulsante login, e reindirizzerà gli utenti verso l'interfaccia di accesso Auth0 per accesso. Dopo il login, verranno reindirizzati su AUTH0_CALLBACK_URL.
  • Logout.php: questo script verrà avviato quando si fa clic sul pulsante di logout, e andrà a reindirizzare gli utenti su Auth0 in background, disconnetterli e farli tornare alla AUTH0_CALLBACK_URL.

File di progetto chiave

Andiamo rapidamente a vedere ogni file nel progetto di avviamento.

Lo Script di accesso

Inizieremo con il file login.php.

All'inizio, abbiamo incluso i caricatori automatici che sono responsabili per il caricamento di Auth0 e le variabile di ambiente delle classi correlate. In seguito, inizializziamo le variabili di configurazione dal file .env utilizzando la funzione getenv.

Successivamente, dobbiamo istanziare l'oggetto Auth0 e chiamare il metodo di login che reindirizza gli utenti a Auth0 per il login. Al momento del login, l'utente verrà rimandato indietro al nostro sito.

Si può accedere utilizzando il tuo account di social come Facebook, Google e simili, o creare un nuovo account durante l'accesso. In entrambi i casi, Auth0 creerà record per i nuovi utenti il loro fine. È possibile abilitare social login diversi sotto Connessioni > social sul cruscotto Auth0. Inoltre, è possibile controllare l'elenco degli utenti che sono connessi utilizzando Auth0 sul cruscotto Auth0 sotto il collegamento Utenti.

Lo Script di disconnessione

Successivamente, diamo un'occhiata veloce al file logout.php.

Questo funziona più o meno come il file login.php, tranne che sarà chiamato quando gli utenti si disconnettono. Viene chiamato il metodo logout per far scadere la sessione utente nella tua app. In seguito, l'utente verrà reindirizzato a Auth0 affinché il servizio sia informato sull'attività logout dell'utente. Infine, l'utente verrà reindirizzato all'applicazione.

Il File Index

Infine, vediamo il file index.php, che è il punto di ingresso della nostra applicazione.

Qui, abbiamo utilizzato il metodo getUser dell'oggetto $auth0 per vedere se c'è una sessione attiva. Se non c'è nessuna sessione attiva, viene visualizzato il collegamento Sign In, che porta l'utente a login.php e avvia il flusso di accesso. Dall'altra parte, salutiamo l'utente e visualizziamo il collegamento di disconnessione se l'utente è già connesso.

Questa è l'implementazione di un flusso di autenticazione di base per le applicazioni lato server.

Proteggere la vostra API personalizzata con OAuth2

In questa sezione, vedremo come si possono proteggere le API personalizzate implementando il flusso OAuth2 per la concessione di codice di autorizzazione. Spero che tu abbia familiarità con il flusso standard della concessione del codice di autorizzazione dato che noi non entreremo nei dettagli di questo. Scopri alcuni dei nostri altri post qui su Envato Tuts+ se vuoi approfondire OAuth2.

Invece, ci immergeremo subito nell'implementazione effettiva. Andare avanti e creare un file auth_code_grant_example.php con il seguente contenuto.

Diamo un'occhiata a come funziona questo codice!

Iniziamo il flusso di autorizzazione

In primo luogo, abbiamo preparato un collegamento che invia l'utente al server Auth0 per avviare il flusso di autorizzazione.

Si prega di sostituire {AUDIENCE}, {CLIENT_ID} e {CALLBACK_URL} con valori corrispondenti all'applicazione. Il parametro {AUDIENCE} deve essere sostituito con il valore del campo dell'identificatore trovato sotto API > {applicazione API} > impostazioni sul cruscotto Auth0.

{SOME_RANDOM_STRING} deve essere sostituito con un valore univoco che è difficile da indovinare. Questa stringa viene utilizzata per prevenire attacchi CSRF. Inoltre, assicurarsi di sostituire {AUTH0_DOMAIN con il nome di dominio, come abbiamo discusso in precedenza.

Ottenere il Token di accesso

Quando un utente fa clic sul link Sign In, verrà indirizzati al server Auth0 per l'autenticazione. Dopo l'autenticazione, gli verrà chiesto di autorizzare l'accesso dell'applicazione al tuo profilo. Dopo l'autorizzazione, l'utente verrà reindirizzato all'applicazione con il code come parametro $_Get.

Successivamente, possiamo scambiare questo code per ottenere il token di accesso.

Come potete vedere, ci vuole una singola chiamata CURL per recuperare il token di accesso.

Chiamare l'Endpoint API personalizzato

Una volta che avete il token di accesso, è possibile chiamare l'endpoint API personalizzato includendolo nell'intestazione.

Un Endpoint di API protetto da Auth0

La risorsa API fittizia nel file demo_api_server.php potrebbe essere simile a questa:

Vediamo rapidamente le parti importanti di questo codice.

Convalidare il Token di accesso

È vostra responsabilità di convalidare il token di accesso in ingresso prima di concedere l'accesso alla risorsa protetta. E questo è esattamente quello che abbiamo fatto nel frammento seguente. Abbiamo utilizzato la classe di utilità JWTVerifier per convalidare il token di accesso.

{SIGNING_ALGORITHM} deve essere sostituito con il valore del campo Signing Algorithm trovato sotto API > {applicazione API} > Impostazioni.

Quindi, ecco come è possibile proteggere le vostre API personalizzate se si desidera utilizzare il flusso di OAuth2 nel servizio Auth0.

Conclusione

Oggi, abbiamo esplorato il servizio Auth0, che fornisce l'autenticazione e l'autorizzazione come servizio. Dopo aver introdotto il servizio di Auth0, abbiamo visto un paio di esempi pratici per dimostrare come si potrebbe integrare con le applicazioni PHP.

Sentitevi liberi di inviare i vostri suggerimenti e le domande  utilizzando il feed qui sotto!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.