Développer une application Java avec Oracle Identity Cloud Service
Découvrez le flux d'authentification et apprenez comment l'exemple d'application de devis met en oeuvre l'intégration à Oracle Identity Cloud Service à l'aide de servlets Java.
Comprendre le flux d'authentification
Le flux de processus suivant décrit les étapes du flux d'authentification et la communication entre un exemple d'application de devis client et Oracle Identity Cloud Service.
-
L'utilisateur accède à l'application Customer Quotes (
https://localhost:8181/cquotes
), puis clique sur Login with Identity Cloud Service. -
L'application de devis client prépare une demande de code d'autorisation dans le format suivant :
-
URL :
https://example.identity.oraclecloud.com/oauth2/v1/authorize?client_id=clientid&response_type=code&redirect_uri=https://localhost:8181/cquotes/return&scope=openid
-
Paramètres :
-
client_id
: ID application unique de devis client enregistré dans Oracle Identity Cloud Service. -
response_type
: Réponse attendue d'Oracle Identity Cloud Service. Dans cette étape, il s'agit du code d'autorisation. -
redirect_uri
: URL où le code d'autorisation est envoyé après que l'utilisateur a terminé l'authentification et l'autorisation avec Oracle Identity Cloud Service. -
scope
: Contrôle les données auxquelles l'application Customer Quotes peut accéder et traiter au nom de l'utilisateur. Comme OpenID Connect est utilisé, l'étendue estopenid
.
-
-
-
L'application de devis client redirige l'utilisateur vers l'URL du code d'autorisation Oracle Identity Cloud Service générée à l'étape 2.
-
Oracle Identity Cloud Service reçoit la demande de code d'autorisation de l'application de devis client (identifiée par
client_id
). -
Oracle Identity Cloud Service vérifie si l'utilisateur est déjà authentifié. Si tel est le cas, Oracle Identity Cloud Service ignore le processus de connexion. Sinon, Oracle Identity Cloud Service démarre le processus de connexion et affiche la page Connexion.
-
L'utilisateur soumet les données d'identification de connexion à Oracle Identity Cloud Service pour validation. Le processus de connexion à Oracle Identity Cloud Service applique la politique de mot de passe jusqu'à ce que les données d'identification de connexion soient validées.
-
Si le processus de connexion réussit, Oracle Identity Cloud Service redirige l'utilisateur vers l'application de devis client à l'aide de l'URL de redirection suivante :
-
URL :
-
https://localhost:8181/cquotes/return?code=code
-
-
Parameter :
-
code
: Code d'autorisation créé par Oracle Identity Cloud Service.
-
-
-
L'application de devis client extrait le code d'autorisation de la demande.
-
L'application de devis communique directement avec Oracle Identity Cloud Service pour échanger le code d'autorisation contre un jeton d'accès d'utilisateur à l'aide de l'URL et des en-têtes suivants :
-
URL :
https://example.identity.oraclecloud.com/oauth2/v1/token?grant_type=authorization_code&code=code
-
En-têtes de demande :
-
Authorization=Basic
(client_id:client_secret, encodé à 64 bits) -
Accept=*/*
-
-
Paramètres :
-
grant_type
: Comme vous utilisez un jetonauthorization_code
pour demander un jeton d'accès à Oracle Identity Cloud Service, le type d'autorisation doit êtreauthorization_code
. -
code
: Code d'autorisation reçu d'Oracle Identity Cloud Service, après la connexion de l'utilisateur.
-
-
Liste des en-têtes :
-
Autorisation : Application approuvée
client_id
etclient_secret
(encodée à 64 bits) dans le format :client_id:client_secret
. -
Accepter : Type de réponse attendu par l'application Customer Quotes
.
-
-
-
Oracle Identity Cloud Service valide la demande et retourne le jeton Web JSON suivant (JWT) à l'application de devis client :
-
Contenu JWT :
-
access_token
: Contient des informations sur l'utilisateur. L'application de devis client peut utiliser ce jeton lors des appels d'API Oracle Identity Cloud Service au nom de l'utilisateur. Le contenuaccess_token
dépend de la portée demandée lors du processus d'authentification. -
id_token
: Jeton principal dans OpenID Connect qui est utilisé pour autoriser le point d'extrémité avecscope=openid
.id_token
contient les informations d'identification (par exemple, nom et courriel) de l'utilisateur. Ces informations peuvent être utilisées par l'application client à plusieurs fins, y compris la vérification et l'affichage du contenu. Un élément légitime (vérifié par le client en fonction d'une signature de fournisseur OpenID Connect) etid_token
actif indique à l'application que l'utilisateur s'est authentifié et qu'il dispose d'un jeton valide.
-
-
-
L'application Customer Quotes traite le jeton JWT (
id_token
), puis extrait les informations sur l'utilisateur retournées par Oracle Identity Cloud Service, telles que le nom et le courriel. -
L'application Customer Quotes affiche la page d'accueil contenant des informations sur l'utilisateur, telles que le nom et le courriel.
Comprendre le code d'application Java
L'exemple d'application Customer Quotes utilise la technologie de servlet.
-
com.example.servlet.AccessResourceServlet
: Lance le flux d'authentification en redirigeant l'utilisateur vers Oracle Identity Cloud Service pour demander un code d'autorisation. -
com.example.servlet.ReturnServlet
: Gère l'URL de redirection à partir d'Oracle Identity Cloud Service, reçoit le code d'autorisation et utilise la classecom.example.utils.OICOAuthClient
pour échanger le code d'autorisation contre un jeton d'identité et un jeton d'accès. -
com.example.servlet.LogoutServlet
: Met fin à la session d'utilisateur de l'application, mais ne déconnecte pas l'utilisateur d'Oracle Identity Cloud Service.
-
com.example.utils.OICOAuthClient
: Construit les points d'extrémité d'URL pour l'API REST d'Oracle Identity Cloud Service, traite les demandes, analyse les réponses d'Oracle Identity Cloud Service et ajoute des informations sur l'utilisateur à la session HTTP de l'application. -
com.example.utils.HttpUtil
: Gère la communication HTTP avec les points d'extrémité d'API REST d'Oracle Identity Cloud Service. Toutes les communications directes entre l'application Customer Quotes et Oracle Identity Cloud Service sont effectuées au moyen de la classejava.net.HttpURLConnection
.