Examinar o Aplicativo Java e o SDK

Nesta seção da solução, você:

  • Examinar o comportamento e o código do aplicativo Web Java

  • Verifique os dados de diagnóstico associados às tentativas de log-in bem-sucedidas e malsucedidas que o aplicativo Web Java inicia no Oracle Identity Cloud Service.

Examinar o Comportamento do Aplicativo Java

O comportamento do aplicativo Web Java segue o fluxo de autenticação de três etapas definido pelo tipo de concessão de código de autorização.

Ative o modo Desenvolvedor do browser para que você possa verificar todas as solicitações, respostas e redirecionamentos que o aplicativo e o Oracle Identity Cloud Service executam. O exemplo a seguir usa o Google Chrome.

  1. Execute o aplicativo Web Java.
  2. Abra um navegador da Web do Google Chrome, acesse o URL http://localhost:8080 e clique em Fazer login.
  3. Pressione F12, selecione a guia Rede e marque a caixa de seleção Preservar log.
    Marque essa caixa de seleção para ver toda a comunicação entre o aplicativo e o Oracle Identity Cloud Service.
  4. Na página Login, clique no ícone vermelho Oracle.

O registro de desenvolvedor do navegador deve mostrar o seguinte fluxo de eventos:

  1. Você solicita o recurso /auth/oracle e seu Web browser recebe uma resposta de redirecionamento do aplicativo Web Java.

    Request URL: http://localhost:8080/auth
    Request Method: GET
    Status Code: 302 Found
     
    Response Headers
    Location: https://idcs-abcd1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri= http%3A%2F%2Flocalhost%3A8080%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
  2. O Oracle Identity Cloud Service recebe sua solicitação de código de autorização e apresenta a página Acessar.

    Request URL: https://idcs-abcd1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri= http%3A%2F%2Flocalhost%3A8080%2Fcallback&response_type=code&scope=urn:opc:idm:t.user.me+openid&state=1234
    Request Method: GET
    Status Code: 303 See Other
     
    Response Headers
    Location:
    https://idcs-abcd1234.identity.domain.com/ui/v1/signin
    Set-cookie: ORA_OCIS_REQ_1=[value has been omitted for readability]
  3. Você acessa o Oracle Identity Cloud Service e ele redireciona seu Web browser para o URL de callback do aplicativo Web Java.

    Request URL:
    http://localhost:8080/callback?code=[value has been omitted for readability]&state=1234
    Request Method: GET
    Status Code: 200 OK
     
    Response Hearders
    Set-Cookie: JSESSIONID=[value has been omitted for readability]

Neste exemplo, o URL de callback redireciona o Web browser para a página Home com o token de acesso do usuário e o token de id definidos como atributos de sessão.

Examinar os Logs do SDK

Siga as etapas abaixo para ativar o log-on do Java SDK do Oracle Identity Cloud Service e examinar qualquer problema encontrado durante o desenvolvimento.

  1. Abra o arquivo de classe ConnectionOptions.java e edite o método getOptions()
  2. Defina o valor Constants.LOG_LEVEL como DEBUG.

Recrie o aplicativo e execute-o novamente.

Você verá detalhes do log, como abaixo:

Fine:   Got token manager
Fine:   using config endpoint: https://idcs-abcd1234.identity.domain.com:443/.well-known/idcs-configuration
...
Fine:   Got response content: [value has been omitted for readability]
...
Fine:   getAuthorizationCodeUrl returning with url: [value has been omitted for readability]
...
Fine:   authorizationCode with code: [value has been omitted for readability]
...
Fine:   Obtaining access token from: [value has been omitted for readability]
...
Fine:   returning access token
...
Fine:   Token signature verification result: true

Verifique os Dados de Diagnóstico

As tentativas de log-in bem-sucedidas e malsucedidas que o aplicativo Web Java inicia no Oracle Identity Cloud Service são registradas nos arquivos de log de diagnóstico do Oracle Identity Cloud Service.

  1. Acesse a console do Oracle Identity Cloud Service.
  2. Na console, expanda a Gaveta de Navegação, clique em Definições e, em seguida, clique em Diagnóstico.
  3. Selecione View de Atividade como o tipo de diagnóstico e clique em Salvar.
  4. Sair do Oracle Identity Cloud Service.

O Oracle Identity Cloud Service captura dados de diagnóstico para os próximos 15 minutos.

  1. Conclua as etapas no tópico Executar o Aplicativo Java para exibir a página Login do aplicativo Web Java.

  2. Clique no ícone vermelho Oracle.

  3. Para fazer uma tentativa de acesso malsucedida, informe um nome de usuário ou uma senha incorreta na página Acessar do Oracle Identity Cloud Service.

  4. Para se conectar com êxito, informe seu nome de usuário e senha corretos.

  5. Use o aplicativo Web Java para sair do Oracle Identity Cloud Service.

  6. Acesse novamente na console do Oracle Identity Cloud Service.

  7. Na console, expanda a Gaveta de Navegação, clique em Relatórios e, em seguida, clique em Dados de Diagnóstico.

  8. Selecione 15 Minutos para o intervalo de tempo, View de Atividade para o tipo de log e CSV para o formato de relatório e clique em Fazer Download do Relatório.

O arquivo de log de diagnóstico inclui informações como as seguintes sobre o usuário que está acessando o Oracle Identity Cloud Service.

Message: ID Token will be signed with User Tenant:idcs-abcd1234 Resource Tenant:idcs-abcd1234, clientId=123456789abcdefghij
Component: OAuth
Timestamp: [Date]
Actor ID: your.email@example.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"request":{"tenant":"idcs-abcd1234","grant types":"authorization_code","scopes":["urn:opc:idm:t.user.me"]},"user":{"id":"111111","name":"your.email@example.com","tenant":"idcs-abcd1234","auth-type":"PASSWORD"},"client":{"id":"123456789abcdefghij","name":"Sample App","tenant":"idcs-abcd1234","auth-type":"PASSWORD"},"environment":{"isCSR":"false","onBehalfOfUser":"false"},"response":{"result":"ALLOWED","scopes":["urn:opc:idm:t.user.me"],"custom-claims":{"clientAppRoles":["Authenticated Client","Me"],"userAppRoles":["Authenticated","Global Viewer","Identity Domain Administrator"],"user_isAdmin":"true"}}}
Component: Authorization/getAllowedScopes
Timestamp: [Date]
Actor ID: your.email@example.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"Message":"SSO SignOn Policy evaluation result for user : 11111  is : effect:ALLOW,authenticationFactor:IDP,allowUserToSkip2FAEnrolment:false,2FAFrequency:SESSION,reAuthenticate:false,trustedDevice2FAFrequency:
Component:
Timestamp:
Actor ID:
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Sign-On Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: uiSignin
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluateRule] Evaluating MFA rule
Component: PolicyEngine
Timestamp: [Date]
Actor ID: uiSignin
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Authentication Target App Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: idcssso
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"password":"********","authFactor":"USERNAME_PASSWORD","device":"{\"currentTime\":\"[date]",\"screenWidth\":1920,\"screenHeight\":1080,\"screenColorDepth\":24,\"screenPixelDepth\":24,\"windowPixelRatio\":1,\"language\":\"en\",\"userAgent\":\"Mozilla\/5.0 (Windows NT 10.0
Component:
Timestamp:
Actor ID:
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"Message":"No session found so need to collect credentials","Redirecting to Login URL: ":https://idcs-abcd1234.identity.oraclecloud.com/ui/v1/signin}
Component: SSO
Timestamp: [Date]
Actor ID: Unauthenticated
---------------------------------------------------------------
...
---------------------------------------------------------------
 
Message: [PolicyEngineUtil.evaluatePolicy] Evaluating Default Identity Provider Policy
Component: PolicyEngine
Timestamp: [Date]
Actor ID: Unauthenticated
---------------------------------------------------------------
Message: Authorization Request, received parameters: scope[urn:opc:idm:t.user.me openid] response_type[code] state[1234] redirect_uri[http://localhost:8080/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated

Os logs mais recentes aparecem na parte superior do arquivo.