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.
-
L'utente accede all'applicazione Preventivi clienti (
https://localhost:8181/cquotes
), quindi fa clic su Esegui login con Identity Cloud Service. -
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
.
-
-
-
L'applicazione Preventivi cliente reindirizza l'utente all'URL del codice di autorizzazione di Oracle Identity Cloud Service generato nel passo 2.
-
Oracle Identity Cloud Service riceve la richiesta del codice di autorizzazione dall'applicazione Preventivi cliente (identificata dal relativo indirizzo
client_id
). -
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.
-
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.
-
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.
-
-
-
L'applicazione Preventivi cliente estrae il codice di autorizzazione dalla richiesta.
-
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 tokenauthorization_code
per richiedere un token di accesso da Oracle Identity Cloud Service, il tipo di privilegio deve essereauthorization_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
eclient_secret
(con codifica a 64 bit) nel formato:client_id:client_secret
. -
Accetta: tipo di risposta prevista dall'applicazione Preventivi cliente
.
-
-
-
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 contenutoaccess_token
dipende dall'ambito richiesto durante il processo di autenticazione. -
id_token
: il token primario in OpenID Connect viene utilizzato per autorizzare l'endpoint conscope=openid
. Il fileid_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 attivoid_token
indica all'applicazione che l'utente ha eseguito l'autenticazione e che dispone di un token valido.
-
-
-
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. -
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.
-
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 classecom.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.
-
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 classejava.net.HttpURLConnection
.