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.

  1. L'utilisateur accède à l'application Customer Quotes (https://localhost:8181/cquotes), puis clique sur Login with Identity Cloud Service.

  2. 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 est openid.

  3. 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.

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

  5. 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.

  6. 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.

  7. 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.

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

  9. 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 jeton authorization_code pour demander un jeton d'accès à Oracle Identity Cloud Service, le type d'autorisation doit être authorization_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 et client_secret (encodée à 64 bits) dans le format : client_id:client_secret.

      • Accepter : Type de réponse attendu par l'application Customer Quotes

        .
  10. 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 contenu access_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é avec scope=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) et id_token actif indique à l'application que l'utilisateur s'est authentifié et qu'il dispose d'un jeton valide.

  11. 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.

  12. 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.

L'application est composée des servlets principaux 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 redirection à partir d'Oracle Identity Cloud Service, reçoit le code d'autorisation et utilise la classe com.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.

Les servlets utilisent les classes d'utilitaire suivantes :
  • 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 classe java.net.HttpURLConnection.