Examen de la aplicación Node.js y el SDK
En esta sección de la solución:
-
Examinar el comportamiento y el código de la aplicación web Node.js
-
Comprobar los datos de diagnóstico asociados a los intentos de conexión correctos y incorrectos que la aplicación web Node.js inicia en Oracle Identity Cloud Service
Examen del Comportamiento de la Aplicación Node.js
El comportamiento de la aplicación web Node.js sigue el flujo de autenticación de tres partes definido por el tipo de permiso de código de autorización.
Para verificar todas las solicitudes, respuestas y redirecciones que realizan la aplicación y Oracle Identity Cloud Service mediante el explorador web, active el modo Desarrollador del explorador. Esta solución utiliza Google Chrome.
El log de desarrollador del explorador debe mostrar el siguiente flujo de eventos:
-
Solicita el recurso
/auth/oracle
y el explorador web recibe una respuesta de redirección de la aplicación 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
-
Oracle Identity Cloud Service recibe la solicitud de código de autorización y presenta la página Conectar.
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]
-
Inicie sesión en Oracle Identity Cloud Service. Oracle Identity Cloud Service redirige el explorador web a la URL de devolución de llamada de la aplicación 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]
En este ejemplo, la URL de devolución de llamada redirige el explorador web a la página /auth.html
con el token de acceso definido como cookie.
En este punto, la aplicación lo autentica localmente mediante el método passport.authenticate()
y, a continuación, reenvía la solicitud a la ruta /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]
Examen de la aplicación y los logs de SDK
La aplicación registra la información en la ventana de la línea de comandos. También puede activar los logs de 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 el archivo
auth.js
y sustituya el valor deLogLevel
pordebug
otrace
según sus necesidades. - Guarde el archivo y reinicie el servidor Node.js
Comprobación de los datos de diagnóstico
Los intentos de conexión correctos y incorrectos que la aplicación web Node.js inicia en Oracle Identity Cloud Service se registran en los archivos log de diagnóstico de Oracle Identity Cloud Service.
- Conéctese a la consola de Oracle Identity Cloud Service.
- En la consola, amplíe el Cajón de navegación, haga clic en Configuración y, a continuación, haga clic en Diagnóstico.
- Seleccione Vista de actividad como tipo de diagnóstico y, a continuación, haga clic en Guardar.
- Desconéctese de Oracle Identity Cloud Service.
Oracle Identity Cloud Service captura datos de diagnóstico para los próximos 15 minutos.
-
Complete los pasos del tema Ejecutar la aplicación Node.js de esta solución para mostrar la página Conexión de la aplicación web Node.js.
-
Haga clic en el icono rojo de Oracle.
-
Para realizar un intento de conexión incorrecto, introduzca un nombre de usuario o una contraseña incorrectos en la página Conexión de Oracle Identity Cloud Service.
-
Para conectarse correctamente, introduzca el nombre de usuario y la contraseña correctos.
-
Utilice la aplicación web Node.js para desconectarse de Oracle Identity Cloud Service.
-
Vuelva a conectarse a la consola de Oracle Identity Cloud Service.
-
En la consola de Oracle Identity Cloud Service, amplíe Caja de navegación, haga clic en Informes y, a continuación, haga clic en Datos de diagnóstico.
-
Seleccione 15 minutos para el rango temporal, Vista de actividad para el tipo de log y CSV para el formato de informe y, a continuación, haga clic en Descargar informe.
El archivo log de diagnóstico incluye información como la siguiente sobre el usuario que se conecta a 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
Los logs más recientes aparecen en la parte superior del archivo.