Sviluppa un'applicazione Java con Oracle Identity Cloud Service

Comprendere il flusso di autenticazione e scoprire come l'applicazione di esempio Preventivi clienti implementa l'integrazione con Oracle Identity Cloud Service utilizzando i servlet Java.

Comprendere il flusso di autenticazione

Il flusso di processo riportato di seguito descrive i passi del flusso di autenticazione e la comunicazione tra un'applicazione di esempio Preventivi clienti e Oracle Identity Cloud Service.

  1. L'utente accede all'applicazione Preventivi clienti (https://localhost:8181/cquotes), quindi fa clic su Esegui login con Identity Cloud Service.

  2. L'applicazione Preventivi cliente prepara una richiesta di codice di autorizzazione nel seguente formato:
    • URL: https://example.identity.oraclecloud.com/oauth2/v1/authorize?client_id=clientid&response_type=code&redirect_uri=https://localhost:8181/cquotes/return&scope=openid

    • Parametri:
      • client_id: l'ID applicazione univoco dei preventivi cliente registrato in Oracle Identity Cloud Service.

      • response_type: la risposta prevista da Oracle Identity Cloud Service. In questo passo si tratta del codice di autorizzazione.

      • redirect_uri: l'URL in cui viene inviato il codice di autorizzazione dopo che l'utente ha completato l'autenticazione e l'autorizzazione con Oracle Identity Cloud Service.

      • scope: controlla quali dati l'applicazione Preventivi cliente può accedere ed elaborare per conto dell'utente. Poiché si utilizza OpenID Connect, l'ambito è openid.

  3. L'applicazione Preventivi cliente reindirizza l'utente all'URL del codice di autorizzazione di Oracle Identity Cloud Service generato nel passo 2.

  4. Oracle Identity Cloud Service riceve la richiesta del codice di autorizzazione dall'applicazione Preventivi cliente (identificata dal relativo indirizzo client_id).

  5. Oracle Identity Cloud Service verifica se l'utente è già stato autenticato. In tal caso, Oracle Identity Cloud Service salta il processo di collegamento. In caso contrario, Oracle Identity Cloud Service avvia il processo di accesso e visualizza la pagina Accedi.

  6. L'utente invia le credenziali di accesso a Oracle Identity Cloud Service per la convalida. Il processo di accesso di Oracle Identity Cloud Service applica il criterio password finché le credenziali di accesso non vengono convalidate correttamente.

  7. Se il processo di accesso riesce, Oracle Identity Cloud Service reindirizza l'utente all'applicazione Preventivi cliente utilizzando il seguente URL di reindirizzamento:
    • URL:

      • https://localhost:8181/cquotes/return?code=code

    • Parametro:

      • code: il codice di autorizzazione creato da Oracle Identity Cloud Service.

  8. L'applicazione Preventivi cliente estrae il codice di autorizzazione dalla richiesta.

  9. L'applicazione Preventivi clienti comunica direttamente con Oracle Identity Cloud Service per scambiare il codice di autorizzazione per un token di accesso utente utilizzando l'URL e le intestazioni seguenti:
    • URL: https://example.identity.oraclecloud.com/oauth2/v1/token?grant_type=authorization_code&code=code

    • Intestazioni richieste:
      • Authorization=Basic (id_client:secret_client, con codifica a 64 bit)

      • Accept=*/*

    • Parametri:
      • grant_type: poiché si utilizza un token authorization_code per richiedere un token di accesso da Oracle Identity Cloud Service, il tipo di privilegio deve essere authorization_code.

      • code: il codice di autorizzazione ricevuto da Oracle Identity Cloud Service dopo la corretta connessione dell'utente.

    • Elenco intestazioni:
      • Autorizzazione: l'applicazione client_id e client_secret (con codifica a 64 bit) nel formato: client_id:client_secret.

      • Accetta: tipo di risposta prevista dall'applicazione Preventivi cliente

        .
  10. Oracle Identity Cloud Service convalida la richiesta e restituisce il seguente token Web JSON (JWT) all'applicazione Preventivi cliente:
    • Contenuto JWT:
      • access_token: contiene informazioni sull'utente. L'applicazione Preventivi cliente può utilizzare questo token durante le chiamate API Oracle Identity Cloud Service per conto dell'utente. Il contenuto access_token dipende dall'ambito richiesto durante il processo di autenticazione.

      • id_token: il token primario in OpenID Connect viene utilizzato per autorizzare l'endpoint con scope=openid. Il file id_token contiene le informazioni di identificazione (ad esempio, nome ed e-mail) relative all'utente. Queste informazioni possono essere utilizzate dall'applicazione client per diversi scopi, tra cui la verifica e la visualizzazione del contenuto. Un valore legittimo (verificato dal client in base alla firma di un provider OpenID Connect) e attivo id_token indica all'applicazione che l'utente ha eseguito l'autenticazione e che dispone di un token valido.

  11. L'applicazione Preventivi cliente elabora il token JWT (id_token), quindi estrae le informazioni utente restituite da Oracle Identity Cloud Service, ad esempio nome e indirizzo di posta elettronica.

  12. L'applicazione Preventivi cliente visualizza la home page contenente informazioni sull'utente, ad esempio nome ed e-mail.

Comprendere il codice dell'applicazione Java

L'applicazione Preventivi cliente di esempio utilizza la tecnologia servlet.

L'applicazione è composta dai seguenti servlet principali:
  • com.example.servlet.AccessResourceServlet: avvia il flusso di autenticazione reindirizzando l'utente a Oracle Identity Cloud Service per richiedere un codice di autorizzazione.

  • com.example.servlet.ReturnServlet: gestisce l'URL di reindirizzamento da Oracle Identity Cloud Service, riceve il codice di autorizzazione e utilizza la classe com.example.utils.OICOAuthClient per scambiare il codice di autorizzazione per un token di identità e un token di accesso.

  • com.example.servlet.LogoutServlet: interrompe la sessione utente dell'applicazione, ma non disconnette l'utente da Oracle Identity Cloud Service.

I servlet utilizzano le seguenti classi di utility:
  • com.example.utils.OICOAuthClient: costruisce gli endpoint URL per l'interfaccia API REST di Oracle Identity Cloud Service, elabora le richieste, analizza le risposte di Oracle Identity Cloud Service e aggiunge informazioni utente alla sessione HTTP dell'applicazione.

  • com.example.utils.HttpUtil: gestisce la comunicazione HTTP con gli endpoint dell'API REST di Oracle Identity Cloud Service. Tutte le comunicazioni dirette dall'applicazione Preventivi clienti a Oracle Identity Cloud Service vengono effettuate tramite la classe java.net.HttpURLConnection.