Desarrollo de una aplicación Java con Oracle Identity Cloud Service

Comprenda el flujo de autenticación y aprenda cómo la aplicación Customer Quotes de ejemplo implanta la integración con Oracle Identity Cloud Service mediante servlets de Java.

Descripción del Flujo de Autenticación

En el siguiente flujo de proceso se describen los pasos del flujo de autenticación y la comunicación entre una aplicación Customer Quotes de ejemplo y Oracle Identity Cloud Service.

  1. El usuario accede a la aplicación Customer Quotes (https://localhost:8181/cquotes) y, a continuación, hace clic en Conectarse con Identity Cloud Service.

  2. La aplicación Customer Quotes prepara una solicitud de código de autorización con el siguiente 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

    • Parámetros:
      • client_id: el cliente cita el ID de aplicación único registrado en Oracle Identity Cloud Service.

      • response_type: respuesta esperada de Oracle Identity Cloud Service. En este paso, es el código de autorización.

      • redirect_uri: URL a la que se envía el código de autorización después de que el usuario haya completado la autenticación y autorización con Oracle Identity Cloud Service.

      • scope: controla los datos a los que la aplicación Customer Quotes puede acceder y procesar en nombre del usuario. Puesto que se utiliza OpenID Connect, el ámbito es openid.

  3. La aplicación Customer Quotes redirecciona al usuario a la URL del código de autorización de Oracle Identity Cloud Service que se ha generado en el paso 2.

  4. Oracle Identity Cloud Service recibe la solicitud de código de autorización de la aplicación Customer Quotes (identificada por su client_id).

  5. Oracle Identity Cloud Service verifica si el usuario ya está autenticado. Si es así, Oracle Identity Cloud Service omite el proceso de conexión. De lo contrario, Oracle Identity Cloud Service inicia el proceso de conexión y muestra la página Conectar.

  6. El usuario envía las credenciales de conexión a Oracle Identity Cloud Service para su validación. El proceso de conexión de Oracle Identity Cloud Service aplica la política de contraseñas hasta que las credenciales de conexión se validen correctamente.

  7. Si el proceso de conexión se realiza correctamente, Oracle Identity Cloud Service redirige al usuario a la aplicación Ofertas de cliente mediante la siguiente URL de redirección:
    • URL:

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

    • Parámetro:

      • code: código de autorización creado por Oracle Identity Cloud Service.

  8. La aplicación Customer Quotes extrae el código de autorización de la solicitud.

  9. La aplicación Customer Quotes se comunica directamente con Oracle Identity Cloud Service para intercambiar el código de autorización de un token de acceso de usuario mediante la siguiente URL y cabeceras:
    • URL: https://example.identity.oraclecloud.com/oauth2/v1/token?grant_type=authorization_code&code=code

    • Cabeceras de Solicitud:
      • Authorization=Basic (client_id:client_secret, codificado de 64 bits)

      • Accept=*/*

    • Parámetros:
      • grant_type: ya que utiliza authorization_code para solicitar un token de acceso de Oracle Identity Cloud Service, el tipo de permiso debe ser authorization_code.

      • code: código de autorización recibido de Oracle Identity Cloud Service, después de que el usuario se conecte correctamente.

    • Lista de encabezados:
      • Autorización: la aplicación de confianza client_id y client_secret (codificada de 64 bits) con el formato: client_id:client_secret.

      • Aceptar: tipo de respuesta que espera la aplicación Customer Quotes

        .
  10. Oracle Identity Cloud Service valida la solicitud y devuelve el siguiente token web JSON (JWT) a la aplicación Customer Quotes:
    • Contenido de JWT:
      • access_token: contiene información sobre el usuario. La aplicación Ofertas de cliente puede utilizar este token al realizar llamadas a la API de Oracle Identity Cloud Service en nombre del usuario. El contenido access_token depende del ámbito que se solicita durante el proceso de autenticación.

      • id_token: token principal en OpenID Connect y se utiliza para autorizar el punto final con scope=openid. id_token contiene la información de identificación (por ejemplo, nombre y correo electrónico) sobre el usuario. La aplicación cliente puede utilizar esta información para varios fines, incluida la verificación y visualización de contenido. Un valor legítimo (verificado por el cliente según una firma de proveedor de OpenID Connect) y un valor id_token activo indican a la aplicación que el usuario se ha autenticado y tiene un token válido.

  11. La aplicación Customer Quotes procesa el token de JWT (id_token) y, a continuación, extrae la información de usuario que devuelve Oracle Identity Cloud Service, como el nombre y el correo electrónico.

  12. La aplicación Customer Quotes muestra la página de inicio que contiene información sobre el usuario, como el nombre y el correo electrónico.

Descripción del código de la aplicación Java

La aplicación Customer Quotes de ejemplo utiliza tecnología de servlet.

La aplicación se compone de los siguientes servlets principales:
  • com.example.servlet.AccessResourceServlet: inicia el flujo de autenticación redirigiendo al usuario a Oracle Identity Cloud Service para solicitar un código de autorización.

  • com.example.servlet.ReturnServlet: maneja la URL de redirección de Oracle Identity Cloud Service, recibe el código de autorización y utiliza la clase com.example.utils.OICOAuthClient para intercambiar el código de autorización por un token de identidad y un token de acceso.

  • com.example.servlet.LogoutServlet: termina la sesión de usuario de la aplicación, pero no desconecta al usuario de Oracle Identity Cloud Service.

Los servlets utilizan las siguientes clases de utilidades:
  • com.example.utils.OICOAuthClient: crea los puntos finales de URL para la API de REST de Oracle Identity Cloud Service, procesa solicitudes, analiza respuestas de Oracle Identity Cloud Service y agrega información de usuario a la sesión HTTP de la aplicación.

  • com.example.utils.HttpUtil: maneja la comunicación HTTP con los puntos finales de la API de REST de Oracle Identity Cloud Service. Toda la comunicación directamente desde la aplicación Customer Quotes a Oracle Identity Cloud Service se realiza a través de la clase java.net.HttpURLConnection.