Spring Boot 4 Microservices & REST APIs · Lezione

Fondamenti di OAuth2 e JWT

Comprenda i concetti fondamentali di OAuth2 per l’autorizzazione e dei JSON Web Token (JWT) per lo scambio sicuro di informazioni.

Lezione 1 di 312 passaggi

Fondamenti di OAuth2 e JWT è una lezione Spring Boot 4 Microservices & REST APIs gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Spring Boot 4 Microservices & REST APIs, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Spring Boot 4 Microservices & REST APIs include 3 lezioni in totale.

Perché la sicurezza delle API è importante

Quando si sviluppano applicazioni, soprattutto quelle con API REST, la sicurezza è fondamentale. Si espongono dati e funzionalità che devono essere protetti.

Senza una sicurezza adeguata, l'API potrebbe essere vulnerabile ad accessi non autorizzati, violazioni dei dati o attacchi malevoli. Questa lezione getta le basi per comprendere come proteggere i propri servizi.

AuthN e AuthZ: differenze principali

Prima di iniziare, chiariamo due termini fondamentali:

  • Autenticazione (AuthN): verifica l'identità di un utente o client. È come mostrare un documento per dimostrare chi si è.
  • Autorizzazione (AuthZ): determina quali operazioni un utente o client autenticato può eseguire. È come un addetto alla sicurezza che controlla il biglietto per verificare se si può accedere a una determinata area.

OAuth2 si concentra principalmente sull'autorizzazione.

OAuth2: lo standard per l'autorizzazione

OAuth2 (Open Authorization 2.0) è un protocollo di autorizzazione standard del settore. Consente a un'applicazione di terze parti (il «client») di ottenere un accesso limitato a un servizio HTTP (il «resource server») per conto di un utente (il «resource owner»).

È fondamentale che OAuth2 consenta questo accesso senza che l'utente debba condividere direttamente le proprie credenziali (nome utente e password) con l'applicazione client.

Ruoli in OAuth2

OAuth2 definisce quattro ruoli principali che interagiscono nel processo di autorizzazione:

  • Resource Owner: l'utente proprietario delle risorse protette.
  • Client: l'applicazione che richiede l'accesso alle risorse protette del resource owner.
  • Authorization Server: il server che autentica il resource owner e rilascia access token al client.
  • Resource Server: il server che ospita le risorse protette e che può accettare e rispondere alle richieste di tali risorse utilizzando gli access token.

Come OAuth2 concede l'accesso

OAuth2 utilizza diversi «grant type» (chiamati anche flow) per rilasciare un access token. Un access token è una credenziale che concede al client l'accesso a risorse specifiche sul resource server.

La scelta del grant type dipende dal tipo di client (ad esempio, applicazione web, app mobile o applicazione lato server) e dai relativi requisiti di sicurezza. L'Authorization Code Flow è ampiamente utilizzato nelle applicazioni web tradizionali.

Introduzione ai JWT: informazioni sicure

Un JSON Web Token (JWT), pronunciato «jot», è un formato compatto e sicuro per gli URL che rappresenta le dichiarazioni da trasferire tra due parti. Queste dichiarazioni sono informazioni su un'entità, in genere l'utente, insieme a metadati aggiuntivi.

I JWT vengono spesso usati come formato degli access token in OAuth2 e offrono un modo autonomo per trasmettere in sicurezza informazioni sull'utente e sulle sue autorizzazioni.

Anatomia di un JWT

Un JWT è composto da tre parti, separate da punti (.):

  • Header: contiene i metadati del token, ad esempio il tipo di token (JWT) e l'algoritmo di firma utilizzato (ad esempio HMAC SHA256 o RSA).
  • Payload: contiene le «claims», ovvero dichiarazioni su un'entità (come un utente) e dati aggiuntivi. Le claims possono essere registrate (standardizzate), pubbliche o private.
  • Signature: serve a verificare che il mittente del JWT sia effettivamente chi dichiara di essere e che il messaggio non sia stato manomesso. Viene creata usando header, payload e una chiave segreta.

Struttura di un JWT: analisi approfondita

Ecco come potrebbe apparire un JWT tipico. Ogni parte è codificata in Base64Url:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • La prima parte è l'Header.
  • La seconda parte è il Payload.
  • La terza parte è la Signature.

Queste parti vengono codificate separatamente e unite da punti.

Decodificare le parti di un JWT (concetto)

Header e payload di un JWT sono semplicemente JSON codificato in Base64Url. Chiunque può quindi decodificarli facilmente per leggerne il contenuto. La sicurezza deriva dalla signature, che verifica l'integrità e l'autenticità del token.

Provi a decodificare una stringa Base64Url di esempio in Java:

import java.util.Base64;

public class Main {
  public static void main(String[] args) {
    String encodedHeader = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
    String encodedPayload = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ";

    System.out.println("Decoded Header:");
    decodeAndPrint(encodedHeader);

    System.out.println("\nDecoded Payload:");
    decodeAndPrint(encodedPayload);
  }

  private static void decodeAndPrint(String encodedString) {
    try {
      byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedString);
      String decodedString = new String(decodedBytes, "UTF-8");
      System.out.println(decodedString);
    } catch (Exception e) {
      System.out.println("Error decoding: " + e.getMessage());
    }
  }
}

Perché usare i JWT?

I JWT offrono diversi vantaggi, soprattutto nei sistemi distribuiti come i microservizi:

  • Stateless: il server non deve memorizzare le informazioni della sessione. Ogni JWT contiene tutti i dati necessari dell'utente.
  • Scalabilità: poiché i token sono autonomi, qualsiasi servizio può convalidarli senza un archivio centrale delle sessioni, semplificando la scalabilità.
  • Compatti e sicuri per gli URL: sono di piccole dimensioni e possono essere trasmessi facilmente nei parametri URL, nelle richieste POST o negli header HTTP.
  • Autonomi: contengono tutte le informazioni sull'utente, riducendo la necessità di interrogare il database a ogni richiesta.

Verifichi la Sua comprensione

Quale delle seguenti affermazioni descrive meglio lo scopo principale di OAuth2?

Riepilogo della lezione

In questa lezione ha acquisito una comprensione di base dei principi della sicurezza delle API. Ha distinto tra autenticazione (chi si è) e autorizzazione (cosa si può fare).

Ha imparato a conoscere OAuth2 come standard per l'autorizzazione sicura, che consente di controllare l'accesso alle risorse. Ha inoltre esplorato i JSON Web Token (JWT), comprendendone la struttura e i vantaggi come formato compatto e autonomo per trasmettere informazioni, spesso utilizzato come access token all'interno di OAuth2.

Gratis per iniziare

Impara Java con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
24
Lezioni
93

Domande Frequenti

La lezione «Fondamenti di OAuth2 e JWT» è gratuita?

Sì — il testo completo di «Fondamenti di OAuth2 e JWT» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Spring Boot 4 Microservices & REST APIs, passa a CoddyKit PRO. Il corso Spring Boot 4 Microservices & REST APIs include 3 lezioni in totale.

Cosa imparerò in «Fondamenti di OAuth2 e JWT»?

Comprenda i concetti fondamentali di OAuth2 per l’autorizzazione e dei JSON Web Token (JWT) per lo scambio sicuro di informazioni. Eserciti Spring Boot 4 Microservices & REST APIs con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Spring Boot 4 Microservices & REST APIs?

Non è richiesta alcuna esperienza precedente. Spring Boot 4 Microservices & REST APIs su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.

Quanto tempo richiede la lezione «Fondamenti di OAuth2 e JWT»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Spring Boot 4 Microservices & REST APIs?

Sì. Ogni lezione Spring Boot 4 Microservices & REST APIs include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di OAuth2 e JWT
  2. Protezione degli endpoint REST
  3. Controllo degli accessi basato sui ruoli
← Torna a Spring Boot 4 Microservices & REST APIs