Desenvolva um Aplicativo Java com o Oracle Identity Cloud Service

Entenda o fluxo de autenticação e saiba como o exemplo do aplicativo Cotações do Cliente implementa a integração com o Oracle Identity Cloud Service usando servlets Java.

Entender o Fluxo de Autenticação

O fluxo de processo a seguir descreve as etapas no fluxo de autenticação e a comunicação entre um aplicativo de Cotas do Cliente de exemplo e o Oracle Identity Cloud Service.

  1. O usuário acessa o aplicativo Cotações do Cliente (https://localhost:8181/cquotes) e clica em Fazer Login com o Identity Cloud Service.

  2. O aplicativo Cotações do Cliente prepara uma solicitação de código de autorização no seguinte 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: O ID exclusivo do Aplicativo de Cotações do Cliente registrado no Oracle Identity Cloud Service.

      • response_type: A resposta esperada do Oracle Identity Cloud Service. Nesta etapa, é o código de autorização.

      • redirect_uri: O URL para o qual o código de autorização é enviado depois que o usuário conclui a autenticação e a autorização com o Oracle Identity Cloud Service.

      • scope: Controla quais dados o aplicativo Cotações do Cliente pode acessar e processar em nome do usuário. Como o OpenID Connect é usado, o escopo é openid.

  3. O aplicativo Cotações do Cliente redireciona o usuário para o URL do código de autorização do Oracle Identity Cloud Service que foi gerado na Etapa 2.

  4. O Oracle Identity Cloud Service recebe a solicitação de código de autorização do aplicativo Cotações do Cliente (identificado por seu client_id).

  5. O Oracle Identity Cloud Service verifica se o usuário já está autenticado. Em caso afirmativo, o Oracle Identity Cloud Service ignora o processo de acesso. Caso contrário, o Oracle Identity Cloud Service iniciará o processo de acesso e exibirá a página Acessar.

  6. O usuário envia as credenciais de acesso para o Oracle Identity Cloud Service para validação. O processo de acesso do Oracle Identity Cloud Service aplica a política de senha até que as credenciais de acesso sejam validadas com sucesso.

  7. Se o processo de acesso for bem-sucedido, o Oracle Identity Cloud Service redirecionará o usuário de volta para o aplicativo Cotações do Cliente usando o seguinte URL de redirecionamento:
    • URL:

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

    • Parâmetro:

      • code: O código de autorização criado pelo Oracle Identity Cloud Service.

  8. O aplicativo Cotações do Cliente extrai o código de autorização da solicitação.

  9. O aplicativo Cotações do Cliente se comunica diretamente com o Oracle Identity Cloud Service para trocar o código de autorização por um token de acesso do usuário usando o seguinte URL e cabeçalhos:
    • URL: https://example.identity.oraclecloud.com/oauth2/v1/token?grant_type=authorization_code&code=code

    • Cabeçalhos de Solicitação:
      • Authorization=Basic (client_id:client_secret, codificado em 64 bits)

      • Accept=*/*

    • Parâmetros:
      • grant_type: Como você está usando um authorization_code para solicitar um token de acesso do Oracle Identity Cloud Service, o tipo de concessão deve ser authorization_code.

      • code: O código de autorização recebido do Oracle Identity Cloud Service, depois que o usuário acessa com sucesso.

    • Lista de cabeçalhos:
      • Autorização: O aplicativo confiável client_id e client_secret (codificado em 64 bits) no formato: client_id:client_secret.

      • Aceitar: O tipo de resposta que o aplicativo Cotações do Cliente espera

        .
  10. O Oracle Identity Cloud Service valida a solicitação e retorna o seguinte JSON Web Token (JWT) para o aplicativo Cotações do Cliente:
    • Conteúdo JWT:
      • access_token: Contém informações sobre o usuário. O aplicativo Cotações do Cliente pode usar esse token ao fazer chamadas de API do Oracle Identity Cloud Service em nome do usuário. O conteúdo access_token depende do escopo solicitado durante o processo de autenticação.

      • id_token: O token principal no OpenID Connect e é usado para autorizar o ponto final com scope=openid. O id_token contém as informações de identificação (por exemplo, nome e e-mail) sobre o usuário. Essas informações podem ser usadas pelo aplicativo cliente para vários fins, incluindo verificação e exibição de conteúdo. Um legítimo (verificado pelo cliente com base em uma assinatura do provedor do OpenID Connect) e ativo id_token informa ao aplicativo que o usuário autenticou e tem um token válido.

  11. O aplicativo Cotações do Cliente processa o token JWT (id_token) e extrai as informações do usuário retornadas pelo Oracle Identity Cloud Service, como nome e e-mail.

  12. O aplicativo Cotações do Cliente exibe a home page contendo informações sobre o usuário, como nome e e-mail.

Entender o Código do aplicativo Java

O aplicativo de Cotas do Cliente de exemplo usa a tecnologia de servlet.

O aplicativo é composto pelos seguintes servlets principais:
  • com.example.servlet.AccessResourceServlet: Inicia o fluxo de autenticação redirecionando o usuário para o Oracle Identity Cloud Service para solicitar um código de autorização.

  • com.example.servlet.ReturnServlet: Trata o URL de redirecionamento do Oracle Identity Cloud Service, recebe o código de autorização e usa a classe com.example.utils.OICOAuthClient para trocar o código de autorização por um token de identidade e um token de acesso.

  • com.example.servlet.LogoutServlet: Encerra a sessão do usuário do aplicativo, mas não desconecta o usuário do Oracle Identity Cloud Service.

Os servlets usam as seguintes classes de utilitário:
  • com.example.utils.OICOAuthClient: Cria os pontos finais de URL para a API REST do Oracle Identity Cloud Service, processa solicitações, analisa respostas do Oracle Identity Cloud Service e adiciona informações do usuário à sessão HTTP do aplicativo.

  • com.example.utils.HttpUtil: Trata a comunicação HTTP com pontos finais da API REST do Oracle Identity Cloud Service. Toda a comunicação diretamente do aplicativo Cotações do Cliente com o Oracle Identity Cloud Service é feita por meio da classe java.net.HttpURLConnection.