فحص تطبيق Node.js وSDK

في هذا القسم من الحل ، يمكنك:

  • فحص السلوك والرمز الخاص بتطبيق ويب Node.js

  • تحقق من بيانات التشخيص المقترنة بحالات تسجيل الدخول الناجحة وغير الناجحة التي يبدأها تطبيق الويب Node.js إلى Oracle Identity Cloud Service

فحص سلوك تطبيق Node.js

يتبع سلوك تطبيق ويب Node.js تدفق التصديق المكون من ثلاث مراحل المعرف بواسطة نوع منح رمز الاعتماد.

للتحقق من كل الطلبات والاستجابات وإعادة توجيه التطبيق وتنفيذ Oracle Identity Cloud Service باستخدام مستعرض الويب ، قم بتمكين طور المطور في المستعرض. يستخدم هذا الحل Google Chrome.

  1. قم بتشغيل تطبيق الويب Node.js.
  2. افتح متصفح ويب Google Chrome ، وقم بالوصول إلى عنوان URL الخاص بـ http://localhost:3000، وانقر على دخول .
  3. اضغط على F12 وحدد علامة التبويب الشبكة ، وحدد مربع الاختيار الاحتفاظ بالأرشيف .
    حدد مربع الاختيار هذا لرؤية كل الاتصالات بين التطبيق و Oracle Identity Cloud Service.
  4. في صفحة الدخول ، انقر على أيقونة Oracle الحمراء ، التي تظهر على يسار أو يمكنك الدخول باستخدام .

يجب أن يعرض سجل مطور المستعرض التدفق التالي من الأحداث:

  1. يمكنك طلب مورد /auth/oracle، ومستعرض الويب الخاص بك يتلقى استجابة إعادة التوجيه من تطبيق ويب 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 طلب رمز الاعتماد ويقدم صفحة تسجيل الدخول .

    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. يمكنك تسجيل الدخول إلى Oracle Identity Cloud Service. يقوم Oracle Identity Cloud Service بإعادة توجيه متصفح الويب إلى عنوان URL لاستدعاء تطبيق ويب 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]

في هذا المثال ، يقوم عنوان URL للاستدعاء بإعادة توجيه متصفح الويب إلى صفحة /auth.html مع تعيين مقطع وصول المستخدم كملف تعريف ارتباط.

وعند هذه النقطة ، يقوم التطبيق بالتصديق محليًا باستخدام أسلوب passport.authenticate() ثم يقوم بإعادة توجيه طلبك إلى مسار /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]

فحص التعليمات البرمجية لتطبيق Node.js

بعد تسجيل الدخول إلى Oracle Identity Cloud Service وتتم إعادة توجيهه إلى عنوان URL للاستدعاء في تطبيق ويب Node.js ، يقوم تطبيق ويب Node.js بتسجيل المعلومات في نافذة سطر الأوامر.

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"}}

يقوم أسلوب ensureAuthenticated() بتسجيل معلومات حول كائن JSON الذي يمثل أنت ، الذي قام بتسجيل الدخول إلى 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"}}

تحقق من بيانات التشخيص

يحاول كل من الدخول الناجح وغير الناجح بدء تطبيق ويب Node.js إلى خدمة Oracle Identity Cloud Service في ملفات سجل التشخيص الخاصة بـ Oracle Identity Cloud Service.

  1. تسجيل الدخول إلى Oracle Identity Cloud Service.
  2. في وحدة تحكم Identity Cloud Service الطرفية ، قم بتوسيع أداة رسم الاستكشاف وانقر على الإعدادات ثم انقر على التشخيصات .
  3. حدد طريقة عرض النشاط كنوع المشخص ، ثم انقر على حفظ .
  4. الخروج من Oracle Identity Cloud Service.

يسجل Oracle Identity Cloud Service البيانات التشخيصية بالدقائق التالية في 15.

  1. أكمل الخطوات في تشغيل موضوع تطبيق Node.js الخاص بهذا الحل لعرض صفحة الدخول الخاصة بتطبيق ويب Node.js.

  2. انقر على أيقونة Oracle الحمراء ، التي تظهر على يسار أو يمكنك الدخول باستخدام .

  3. لإجراء محاولة غير ناجحة لتسجيل الدخول ، أدخل اسم مستخدم أو كلمة سر غير صحيحة في صفحة تسجيل الدخول إلى Oracle Identity Cloud Service.

  4. للدخول بنجاح ، أدخل اسم المستخدم وكلمة السر الصحيحين.

  5. استخدم تطبيق الويب Node.js للخروج من Oracle Identity Cloud Service.

  6. قم بتسجيل الدخول مرة أخرى إلى Oracle Identity Cloud Service.

  7. في وحدة تحكم Identity Cloud Service الطرفية ، قم بتوسيع درج الاستكشاف وانقر على التقارير ، ثم انقر على بيانات التشخيص.

  8. حدد 15-Minute لمدى الوقت وعرض النشاط لنوع الأرشيف وCSV لصيغة التقرير ثم انقر تحميل التقرير

يشتمل ملف السجل التشخيصي على معلومات مثل ما يلي حول تسجيل دخول المستخدم إلى 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

تظهر أحدث السجلات أعلى الملف.