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.
O registro de desenvolvedor do navegador deve mostrar o seguinte fluxo de eventos:
-
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
-
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]
-
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.
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 ---------------------
- Abra o arquivo
auth.js
e substitua o valor deLogLevel
pordebug
outrace
, dependendo das suas necessidades. - 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.
- Acesse a console do Oracle Identity Cloud Service.
- Na console, expanda a Gaveta de Navegação, clique em Definições e, em seguida, clique em Diagnóstico.
- Selecione View de Atividade como o tipo de diagnóstico e clique em Salvar.
- Sair do Oracle Identity Cloud Service.
O Oracle Identity Cloud Service captura dados de diagnóstico para os próximos 15 minutos.
-
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.
-
Clique no ícone vermelho Oracle.
-
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.
-
Para se conectar com êxito, informe seu nome de usuário e senha corretos.
-
Use o aplicativo Web Node.js para sair do Oracle Identity Cloud Service.
-
Acesse novamente na console do Oracle Identity Cloud Service.
-
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.
-
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.