Examinar o Aplicativo Node.js e o SDK

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

  • Examinar o comportamento e o código do aplicativo Web Node.js

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

Examinar o Comportamento do Aplicativo Node.js

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

Para verificar todas as solicitações, respostas e redirecionamentos que o aplicativo e o Oracle Identity Cloud Service executam usando o Web browser, ative o modo Desenvolvedor do browser. Esta solução usa o Google Chrome.

  1. Execute o aplicativo Web Node.js.
  2. Abra um navegador da Web do Google Chrome, acesse o URL http://localhost:3000 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, que aparece à direita de ou Você pode fazer log-in com.

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

    Request URL: http://localhost:3000/auth/oracle
    Request Method: GET
    Status Code: 302 Found
     
    Response Headers
    Location: https://idcs-1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&response_type=code&scope=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-1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&response_type=code&scope=openid&state=1234Request 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. O Oracle Identity Cloud Service redireciona seu Web browser para o URL de callback do aplicativo Web Node.js.

    Request URL:
    http://localhost:3000/callback?code=[value has been omitted for readability]&state=1234
    Request Method: GET
    Status Code: 302 Found
     
    Response Hearders
    Location: /auth.html
    Set-Cookie: idcs_user_assertion=[value has been omitted for readability]

Neste exemplo, o URL de callback redireciona seu Web browser para a página /auth.html com o token de acesso definido como cookie.

Nesse ponto, o aplicativo autentica você localmente usando o método passport.authenticate() e, em seguida, encaminha sua solicitação para a rota /home.

Request URL: http://localhost:3000/home
Request Method: GET
Status Code: 200 OK
 
Response Headers
Cookie:
connect.sid=[value has been omitted for readability]

Examinar o Aplicativo e os Logs do SDK

O aplicativo registra informações na janela da linha de comando. Você também pode ativar os logs do SDK.

Por padrão, o aplicativo de amostra registra informações do fluxo de autenticação na janela de linha de comando.
Using ClientId=123456789abcdefghij
Server started on port 3000

---Resource: /auth/oracle -- Logging in ----------------------------------

authZurl=https://idcs-abcd1234.identity.domain.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&response_type=code&scope=urn%3Aopc%3Aidm%3At.user.me%20openid&state=1234

---Resource: /callback -- Exchanging authzcode for a token ---------------------

authZcode=[value has been omitted for readability]
result.access_token = [value has been omitted for readability]
result.id_token = [value has been omitted for readability]

---Resource: /auth -- passport.authenticate ---------------------

---function ensureAuthenticated() -- Validating user logged in ---------------------
req.user=[The JSON object as String - value has been omitted for readability]

---Resource: /home -- Rendering home ---------------------
Siga as etapas abaixo para ativar o log-on do SDK Node.js do Oracle Identity Cloud Service e examinar qualquer problema encontrado durante o desenvolvimento.
  1. Abra o arquivo auth.js e substitua o valor de LogLevel por debug ou trace, dependendo das suas necessidades.
  2. Salve o arquivo e reinicie o servidor Node.js

Verifique os Dados de Diagnóstico

As tentativas de log-in bem-sucedidas e malsucedidas que o aplicativo Web Node.js 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. Execute as etapas no tópico Executar o Aplicativo Node.js desta solução para exibir a página Log-in do aplicativo Web Node.js.

  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 Node.js para sair do Oracle Identity Cloud Service.

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

  7. Na console do Oracle Identity Cloud Service, 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@domain.com
---------------------------------------------------------------
...
---------------------------------------------------------------
Message: {"request":{"tenant":"idcs-abcd1234","grant types":"authorization_code","scopes":["urn:opc:idm:t.user.me"]},"user":{"id":"111111","name":"your.email@domain.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@domain.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.domain.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:3000/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated

Os logs mais recentes aparecem na parte superior do arquivo.