Examinez l'application et la trousse SDK Node.js
Dans cette section de la solution, vous allez :
-
Examinez le comportement et le code de l'application Web Node.js
-
Vérifiez les données de diagnostic associées aux tentatives de connexion réussies et infructueuses que l'application Web Node.js lance dans Oracle Identity Cloud Service
Examinez le comportement de l'application Node.js
Le comportement de l'application Web Node.js suit le flux d'authentification à trois branches défini par le type d'octroi de code d'autorisation.
Pour vérifier toutes les demandes, réponses et redirections effectuées par l'application et Oracle Identity Cloud Service à l'aide du navigateur Web, activez le mode Développeur de votre navigateur. Cette solution utilise Google Chrome.
Le journal du développeur du navigateur doit afficher le flux d'événements suivant :
-
Vous demandez la ressource
/auth/oracle
et votre navigateur Web reçoit une réponse de redirection de l'application 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 reçoit votre demande de code d'autorisation et présente la page Connexion.
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]
-
Vous vous connectez à Oracle Identity Cloud Service. Oracle Identity Cloud Service redirige votre navigateur Web vers l'URL de rappel de l'application 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]
Dans cet exemple, l'URL de rappel redirige votre navigateur Web vers la page /auth.html
avec le jeton d'accès défini en tant que témoin.
À ce stade, l'application vous authentifie localement à l'aide de la méthode passport.authenticate()
, puis transmet votre demande à la route /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]
Examiner l'application et les journaux SDK
L'application enregistre les informations dans la fenêtre de ligne de commande. Vous pouvez également activer les journaux de trousse 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 ---------------------
- Ouvrez le fichier
auth.js
et remplacez la valeur deLogLevel
pardebug
outrace
selon vos besoins. - Enregistrez le fichier et redémarrez le serveur Node.js
Vérifier les données de diagnostic
Les tentatives de connexion réussies et non réussies que l'application Web Node.js lance à Oracle Identity Cloud Service sont enregistrées dans les fichiers journaux de diagnostic d'Oracle Identity Cloud Service.
- Connectez-vous à la console Oracle Identity Cloud Service.
- Dans la console, développez le tiroir de navigation, cliquez sur Paramètres, puis sur Diagnostics.
- Sélectionnez Vue d'activité comme type de diagnostic, puis cliquez sur Enregistrer.
- Déconnectez-vous d'Oracle Identity Cloud Service.
Oracle Identity Cloud Service saisit les données de diagnostic pour les 15 prochaines minutes.
-
Effectuez les étapes de la rubrique Exécuter l'application Node.js de cette solution pour afficher la page Connexion de l'application Web Node.js.
-
Cliquez sur l'icône rouge Oracle.
-
Pour échouer à la tentative de connexion, entrez un nom d'utilisateur ou un mot de passe incorrect dans la page Connexion d'Oracle Identity Cloud Service.
-
Pour vous connecter, entrez votre nom d'utilisateur et votre mot de passe corrects.
-
Utilisez l'application Web Node.js pour vous déconnecter d'Oracle Identity Cloud Service.
-
Reconnectez-vous à la console Oracle Identity Cloud Service.
-
Dans la console Oracle Identity Cloud Service, développez le tiroir de navigation, cliquez sur Rapports, puis sur Données de diagnostic.
-
Sélectionnez 15 minutes pour l'intervalle de temps, Vue d'activité pour le type de journal et CSV pour le format de rapport, puis cliquez sur Télécharger le rapport.
Le fichier journal de diagnostic contient des informations telles que les suivantes sur la connexion de l'utilisateur à 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
Les journaux les plus récents apparaissent en haut du fichier.