Esaminare l'applicazione Java e il kit SDK
In questa sezione della soluzione ci si trova:
-
Esaminare il funzionamento e il codice dell'applicazione Web Java
-
Controllare i dati di diagnostica associati ai tentativi di login riusciti e non riusciti che l'applicazione Web Java inizi in Oracle Identity Cloud Service.
Controllare il comportamento dell'applicazione Java
Il funzionamento dell'applicazione Web Java segue il flusso di autenticazione a tre fasi definito dal tipo di autorizzazione del codice di autorizzazione.
Abilitare la modalità sviluppatore del browser in modo da poter verificare tutte le richieste, le risposte e reindirizzare l'esecuzione sia dell'applicazione che di Oracle Identity Cloud Service. Nell'esempio seguente viene utilizzato Google Chrome.
Il log degli sviluppatori del browser deve mostrare il flusso di eventi seguente:
-
La risorsa
/auth/oracle
viene richiesta e il browser Web riceve una risposta di reindirizzamento dall'applicazione Web Java.Request URL: http://localhost:8080/auth Request Method: GET Status Code: 302 Found Response Headers Location: https://idcs-abcd1234.identity.oraclecloud.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
-
Oracle Identity Cloud Service riceve la richiesta del codice di autorizzazione e presenta la pagina Collega .
Request URL: https://idcs-abcd1234.identity.oraclecloud.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.oraclecloud.com/ui/v1/signin Set-cookie: ORA_OCIS_REQ_1=[value has been omitted for readability]
-
È possibile collegarsi a Oracle Identity Cloud Service e reindirizzare il browser Web all'URL di callback dell'applicazione 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]
In questo esempio, l'URL di callback reindirizza il browser Web alla home page con il token di accesso utente e il token ID impostati come attributi di sessione.
Esaminare i log SDK
Attenersi alla procedura riportata di seguito per attivare il log Java SDK di Oracle Identity Cloud Service ed esaminare gli eventuali problemi rilevati durante lo sviluppo.
- Aprire il file di classe
ConnectionOptions.java
e modificare il metodogetOptions()
- Impostare il valore
Constants.LOG_LEVEL
suDEBUG
.
Rigenerare l'applicazione ed eseguirla di nuovo.
Vengono visualizzati i dettagli di log riportati di seguito.
Fine: Got token manager
Fine: using config endpoint: https://idcs-abcd1234.identity.oraclecloud.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
Controllare i dati di diagnostica
Sia i tentativi di login riusciti che non riusciti effettuati dall'applicazione Web Java sono registrati in Oracle Identity Cloud Service nei file di log di diagnostica Oracle Identity Cloud Service.
- Accedere alla console di Oracle Identity Cloud Service.
- Nella console, espandere il cassetto di navigazione, fare clic su Impostazioni , quindi fare clic su Diagnostica .
- Selezionare Vista attività come tipo di diagnostica, quindi fare clic su Salva .
- Scollegarsi da Oracle Identity Cloud Service.
Oracle Identity Cloud Service acquisisce i dati diagnostici per i prossimi 15 minuti.
-
Completare i passi descritti nell'argomento Esegui l'applicazione Java per visualizzare la pagina Login dell'applicazione Web Java.
-
Fare clic sull'icona Oracle rossa.
-
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.
-
Per accedere correttamente, immettere il nome utente e la password corretti.
-
Utilizzare l'applicazione Web Java per scollegarsi da Oracle Identity Cloud Service.
-
Accedere di nuovo alla console di Oracle Identity Cloud Service.
-
Nella console, espandere il cassetto di navigazione, fare clic su Report , quindi fare clic su Dati diagnostici.
-
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:8080/callback] client_id[123456789abcdefghij]
Component: OAuth
Timestamp: [Date]
Actor ID: Unauthenticated
I log più recenti vengono visualizzati nella parte superiore del file.