Node.js -Anwendung und SDK prüfen
In diesem Abschnitt der Lösung haben Sie folgende Möglichkeiten:
-
Prüfen Sie Verhalten und Code der Node.js -Webanwendung
-
Prüfen Sie die Diagnosedaten, die mit erfolgreichen und nicht erfolgreichen Anmeldeversuchen verknüpft sind, die die Node.js -Webanwendung in Oracle Identity Cloud Service startet
Verhalten der Node.js -Anwendung prüfen
Das Verhalten der Node.js -Webanwendung folgt dem dreibeinigen Authentifizierungsflow, der durch den Berechtigungstyp des Autorisierungscodes definiert wird.
Um alle Anforderungen, Antworten und Umleitungen zu überprüfen, die die Anwendung und Oracle Identity Cloud Service mit dem Webbrowser ausführen, aktivieren Sie den Developer-Modus Ihres Browsers. Diese Lösung verwendet Google Chrome.
Im Entwicklerlog des Browsers sollte der folgende Ereignisfluss angezeigt werden:
-
Sie fordern die
/auth/oracle
-Ressource an, und Ihr Webbrowser erhält eine Umleitungsantwort von der Node.js -Webanwendung.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
-
Oracle Identity Cloud Service empfängt Ihre Autorisierungscodeanforderung und zeigt die Anmeldeseite an .
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]
-
Sie melden sich bei Oracle Identity Cloud Service an. Oracle Identity Cloud Service leitet den Webbrowser an die Callback-URL der Node.js -Webanwendung um.
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 diesem Beispiel leitet die Callback-URL Ihren Webbrowser an die /auth.html
-Seite um, wobei Ihr Benutzerzugriffstoken als Cookie festgelegt ist.
An dieser Stelle authentifiziert die Anwendung Sie lokal mit der Methode passport.authenticate()
und leitet dann Ihre Anforderung an die /home
-Route weiter.
Request URL: http://localhost:3000/home
Request Method: GET
Status Code: 200 OK
Response Headers
Cookie:
connect.sid=[value has been omitted for readability]
Code der Node.js -Anwendung prüfen
Nachdem Sie sich bei Oracle Identity Cloud Service angemeldet und zur Callback-URL der Node.js -Webanwendung umgeleitet wurden, protokolliert die Node.js -Webanwendung Informationen im Befehlszeilenfenster.
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"}}
Die ensureAuthenticated()
-Methode protokolliert Informationen zum JSON-Objekt, das Sie darstellen und bei Oracle Identity Cloud Service angemeldet sind.
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"}}
Diagnosedaten prüfen
Sowohl erfolgreiche als auch nicht erfolgreiche Anmeldeversuche, die die Node.js -Webanwendung an Oracle Identity Cloud Service startet, werden in den Diagnoselogdateien von Oracle Identity Cloud Serviceregistriert.
- Melden Sie sich bei Oracle Identity Cloud Service an.
- Blenden Sie In der Identity Cloud Service -Konsole das Slide-In-Menü ein, klicken Sie auf Einstellungen , Diagnose .
- Wählen Sie Aktivitätsansicht als Diagnosetyp, und klicken Sie auf Speichern .
- Melden Sie sich bei Oracle Identity Cloud Service ab.
Oracle Identity Cloud Service erfasst Diagnosedaten für die nächsten 15 Minuten.
-
Führen Sie die Schritte im Thema "Node.js -Anwendung ausführen" dieser Lösung aus, um die Anmeldeseite der Node.js -Webanwendung anzuzeigen.
-
Klicken Sie auf das rote Oracle -Symbol, das rechts neben dem Symbol angezeigt wird, oder Sie können sich mit anmelden.
-
Um einen nicht erfolgreichen Anmeldeversuch zu erstellen, geben Sie auf der Oracle Identity Cloud Service -Anmeldeseite einen falschen Benutzernamen oder ein falsches Kennwort ein.
-
Um sich erfolgreich anzumelden, geben Sie Ihren Benutzernamen und Ihr Kennwort ein.
-
Melden Sie sich über die Node.js -Webanwendung von Oracle Identity Cloud Service ab.
-
Melden Sie sich erneut bei Oracle Identity Cloud Service an.
-
Blenden Sie In der Identity Cloud Service -Konsole den Slide-In-Menü ein, klicken Sie auf Berichte , Diagnosedaten .
-
Wählen Sie 15-Minuten für den Zeitbereich, Aktivitätsansicht für den Logtyp und CSV für das Berichtsformat, und klicken Sie dann auf Bericht herunterladen.
Die Diagnoselogdatei enthält Informationen wie die Folgenden zu dem Benutzer, der sich bei Oracle Identity Cloud Service anmeldet.
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
Die neuesten Logs werden am Anfang der Datei angezeigt.