Esaminare l'applicazione Node.js e il kit SDK

In questa sezione della soluzione ci si trova:

  • Esaminare il funzionamento e il codice dell'applicazione Web Node.js

  • Controllare i dati di diagnostica associati ai tentativi di login riusciti e non riusciti che l'applicazione Web Node.js inizi in Oracle Identity Cloud Service

Controllare il comportamento dell'applicazione Node.js

Il funzionamento dell'applicazione Web Node.js segue il flusso di autenticazione a tre fasi definito dal tipo di autorizzazione del codice di autorizzazione.

Per verificare tutte le richieste, le risposte e reindirizzare che l'applicazione e Oracle Identity Cloud Service eseguono utilizzando il browser Web, abilitare la modalità sviluppatore del browser. Questa soluzione utilizza Google Chrome.

  1. Eseguire l'applicazione Web Node.js.
  2. Aprire un browser Web Google Chrome, accedere all'URL di http://localhost:3000 e fare clic su Login .
  3. Premere F12, selezionare la scheda Rete e selezionare la casella di controllo Conserva log .
    Selezionare questa casella di controllo per visualizzare tutte le comunicazioni tra l'applicazione e Oracle Identity Cloud Service.
  4. Nella pagina Login fare clic sull'icona Oracle rossa, visualizzata a destra di oppure è possibile eseguire il login.

Il log degli sviluppatori del browser deve mostrare il flusso di eventi seguente:

  1. La risorsa /auth/oracle viene richiesta e il browser Web riceve una risposta di reindirizzamento dall'applicazione Web Node.js.

    Request URL: http://localhost:3000/auth/oracle
    Request Method: GET
    Status Code: 302 Found
     
    Response Headers
    Location: https://idcs-1234.identity.oraclecloud.com/oauth2/v1/authorize?client_id=123456789abcdefghij&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback&response_type=code&scope=openid&state=1234
  2. Oracle Identity Cloud Service riceve la richiesta del codice di autorizzazione e presenta la pagina Collega .

    Request URL: https://idcs-1234.identity.oraclecloud.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.oraclecloud.com/ui/v1/signin
    Set-cookie: ORA_OCIS_REQ_1=[value has been omitted for readability]
  3. È possibile collegarsi a Oracle Identity Cloud Service. Oracle Identity Cloud Service reindirizza il browser Web all'URL di callback dell'applicazione 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]

In questo esempio, l'URL di callback reindirizza il browser Web alla pagina /auth.html con il token di accesso utente impostato come cookie.

A questo punto, l'applicazione autentica l'utente localmente utilizzando il metodo passport.authenticate() e inoltra la richiesta all'instradamento /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]

Controllare il codice dell'applicazione Node.js

Dopo aver effettuato l'accesso a Oracle Identity Cloud Service e aver reindirizzato all'URL di callback dell'applicazione Web Node.js, l'applicazione Web Node.js registra le informazioni nella finestra della riga di comando.

req.user={"name":"your.email@domain.com","displayName":"Your Name","id":"111111111111","tenant":"idcs-abcd1234","groups":[{"name":"Group 1","id":"2222222222222","location":"https://idcs-abcd1234.identity.oraclecloud.com/admin/v1/Groups/7787fbab31b34e08b39cdeedf1f4233a"}],"appRoles":[{"name":"Identity Domain Administrator","id":"333333333333333","location":"https://idcs-abcd1234.identity.oraclecloud.com/admin/v1/AppRoles/444444444444444","appName":"SampleApp","appID":"SampleAppId"}],"client":{"client_name":"Sample Apps","client_id":"555555555555","client_tenantname":"idcs-abcd1234","scope":"openid","audience":"https://idcs-abcd1234.identity.oraclecloud.com"}}

Il metodo ensureAuthenticated() registra le informazioni sull'oggetto JSON che rappresenta l'utente, che sono collegati a Oracle Identity Cloud Service.

ensureAuthenticated req.user={"name":"your.email@domain.com","displayName":"Your Name","id":"111111111111","tenant":"idcs-abcd1234","groups":[{"name":"Group 1","id":"2222222222222","location":"https://idcs-abcd1234.identity.oraclecloud.com/admin/v1/Groups/7787fbab31b34e08b39cdeedf1f4233a"}],"appRoles":[{"name":"Identity Domain Administrator","id":"333333333333333","location":"https://idcs-abcd1234.identity.oraclecloud.com/admin/v1/AppRoles/444444444444444","appName":"SampleApp","appID":"SampleAppId"}],"client":{"client_name":"Sample Apps","client_id":"555555555555","client_tenantname":"idcs-abcd1234","scope":"openid","audience":"https://idcs-abcd1234.identity.oraclecloud.com"}}

Controllare i dati di diagnostica

Sia i tentativi di login riusciti che non riusciti avviati dall'applicazione Web Node.js a Oracle Identity Cloud Service sono registrati nei file di log di diagnostica di Oracle Identity Cloud Service.

  1. Collegarsi a Oracle Identity Cloud Service.
  2. Nella console di Identity Cloud Service, espandere il cassetto di navigazione, fare clic su Impostazioni , quindi fare clic su Diagnostica .
  3. Selezionare Vista attività come tipo di diagnostica, quindi fare clic su Salva .
  4. Scollegarsi da Oracle Identity Cloud Service.

Oracle Identity Cloud Service acquisisce i dati diagnostici per i prossimi 15 minuti.

  1. Completare i passi descritti nell'argomento Esegui l'applicazione Node.js di questa soluzione per visualizzare la pagina Login dell'applicazione Web Node.js.

  2. Fare clic sull'icona Oracle rossa, visualizzata a destra di oppure è possibile eseguire il login.

  3. Per effettuare un tentativo di accesso non riuscito, immettere un nome utente errato o una password errata nella pagina Collegamento di Oracle Identity Cloud Service.

  4. Per accedere correttamente, immettere il nome utente e la password corretti.

  5. Utilizzare l'applicazione Web Node.js per scollegarsi da Oracle Identity Cloud Service.

  6. Collegarsi di nuovo a Oracle Identity Cloud Service.

  7. Nella console di Identity Cloud Service, espandere il cassetto di navigazione, fare clic su Report , quindi fare clic su Dati diagnostici.

  8. Selezionare 15-Minute per l'intervallo di tempo, Vista attività per il tipo di log e CSV per il formato report, quindi fare clic su Scarica report .

Il file di log di diagnostica include informazioni come quelle riportate di seguito per l'utente che accede 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@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:3000/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated

I log più recenti vengono visualizzati nella parte superiore del file.