Développer une application Java avec Oracle Identity Cloud Service

Familiarisez-vous avec le flux d'authentification et découvrez comment l'exemple d'application Devis client implémente l'intégration à Oracle Identity Cloud Service à l'aide des 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 Devis client et Oracle Identity Cloud Service.

  1. L'utilisateur accède à l'application Devis client (https://localhost:8181/cquotes), puis clique sur Connexion avec Identity Cloud Service.

  2. L'application de devis client prépare une demande de code d'autorisation au 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 Devis client enregistré dans Oracle Identity Cloud Service.

      • response_type : réponse attendue de Oracle Identity Cloud Service. A cette étape, il s'agit du code d'autorisation.

      • redirect_uri : URL à laquelle le code d'autorisation est envoyé une fois que l'utilisateur a terminé l'authentification et l'autorisation auprès de Oracle Identity Cloud Service.

      • scope : contrôle les données auxquelles l'application Devis client peut accéder et traiter pour le compte de l'utilisateur. OpenID Connect étant utilisé, la portée est openid.

  3. L'application Devis client redirige l'utilisateur vers l'URL du code d'autorisation Oracle Identity Cloud Service qui a été générée à l'étape 2.

  4. Oracle Identity Cloud Service reçoit la demande de code d'autorisation de l'application Devis client (identifiée par son client_id).

  5. Oracle Identity Cloud Service vérifie si l'utilisateur est déjà authentifié. Dans ce cas, Oracle Identity Cloud Service ignore le processus de connexion. Si ce n'est pas le cas, Oracle Identity Cloud Service lance le processus de connexion et affiche la page de connexion.

  6. L'utilisateur soumet les informations d'identification de connexion à Oracle Identity Cloud Service pour validation. Le processus de connexion à Oracle Identity Cloud Service applique la stratégie de mot de passe jusqu'à ce que les informations d'identification de connexion soient validées.

  7. Si le processus de connexion réussit, Oracle Identity Cloud Service redirige l'utilisateur vers l'application Devis des clients à l'aide de l'URL de redirection suivante :
    • URL :

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

    • Paramètre :

      • code : code d'autorisation créé par Oracle Identity Cloud Service.

  8. L'application de devis client extrait le code d'autorisation de la demande.

  9. L'application Devis client communique directement avec Oracle Identity Cloud Service pour échanger le code d'autorisation d'un jeton d'accès 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, 64-bit encodé)

      • Accept=*/*

    • Paramètres :
      • grant_type : comme vous utilisez un kit authorization_code pour demander un jeton d'accès de Oracle Identity Cloud Service, le type d'octroi doit être authorization_code.

      • code : code d'autorisation reçu par Oracle Identity Cloud Service, une fois que l'utilisateur s'est connecté avec succès.

    • Liste des en-têtes :
      • Autorisation : application sécurisée client_id et client_secret (64-bit encodé) au format suivant : client_id:client_secret.

      • Accepter : type de réponse attendu par l'application Devis client

        .
  10. Oracle Identity Cloud Service valide la demande et renvoie le jeton Web JSON (JWT) suivant à l'application Devis des clients :
    • Contenu JWT :
      • access_token : contient des informations sur l'utilisateur. L'application Devis client peut utiliser ce jeton lors des appels d'API Oracle Identity Cloud Service pour le compte de l'utilisateur. Le contenu access_token dépend de la portée demandée lors du processus d'authentification.

      • id_token : jeton principal dans OpenID Connect utilisé pour autoriser l'adresse avec scope=openid. Le fichier id_token contient les informations d'identification (par exemple, le nom et l'adresse électronique) de l'utilisateur. Ces informations peuvent être utilisées par l'application client à différentes fins, notamment la vérification et l'affichage de contenu. Un légitime (vérifié par le client en fonction d'une signature du fournisseur OpenID Connect) et un code id_token actif indique à l'application que l'utilisateur s'est authentifié et qu'il a un jeton valide.

  11. L'application de devis client traite le jeton JWT (id_token), puis extrait les informations utilisateur renvoyées par Oracle Identity Cloud Service, telles que le nom et le courriel.

  12. L'application de devis client affiche la page d'accueil contenant les informations sur l'utilisateur, telles que le nom et le courriel.

Comprendre le code d'application Java

L'exemple d'application Devis client utilise la technologie de servlet.

L'application est composée des principaux servlets suivants :
  • 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 réacheminement à partir de Oracle Identity Cloud Service, reçoit le code d'autorisation et utilise la classe com.example.utils.OICOAuthClient pour échanger le code d'autorisation d'un jeton d'identité et d'un jeton d'accès.

  • com.example.servlet.LogoutServlet : met fin à la session utilisateur de l'application, mais ne déconnecte pas l'utilisateur de Oracle Identity Cloud Service.

Les servlets utilisent les classes d'utilitaire suivantes :
  • com.example.utils.OICOAuthClient : construit les adresses d'URL pour l'API REST Oracle Identity Cloud Service, traite les demandes, analyse les réponses Oracle Identity Cloud Service et ajoute des informations utilisateur à la session HTTP de l'application.

  • com.example.utils.HttpUtil : gère la communication HTTP avec les adresses d'API REST Oracle Identity Cloud Service. Toutes les communications directement entre l'application de devis client et Oracle Identity Cloud Service sont établies via la classe java.net.HttpURLConnection.