كيفية إصلاح INVALID_LOGIN في عمليات نشر Salesforce

تم رفض بيانات الاعتماد أو الجلسة التي يستخدمها خط أنابيب CI للمصادقة على Salesforce قبل أن تتمكن عملية النشر من البدء أصلاً.

يظهر أثناء: المصادقة، قبل تشغيل أي منطق نشر أو DML

المعنى

يُعد INVALID_LOGIN خطأ مصادقة، وليس خطأ بيانات وصفية: رفض Salesforce محاولة تسجيل الدخول نفسها، لذا لم يُنفَّذ أي منطق نشر على الإطلاق. في سياق CI/CD، يعني هذا غالبًا جلسة منتهية الصلاحية، أو تطبيقًا متصلاً تم إلغاؤه، أو قيدًا على عناوين IP يحجب طلب تسجيل الدخول الخاص بخط الأنابيب.

ولأن المصادقة تحدث قبل أي شيء آخر، فإن هذا الخطأ لا يخبرك بشيء عن محتوى عملية النشر، فالحزمة التي لم تفشل قط في نشر حقيقي يمكن أن تسبب INVALID_LOGIN إذا كانت بيانات الاعتماد المتصلة بالمؤسسة غير صالحة.

التشخيص

الأسباب الشائعة

رمز OAuth أو جلسة منتهية الصلاحية أو مُلغاة
انتهت صلاحية رمز التحديث، أو تفويض التطبيق المتصل، أو الجلسة المخزنة التي يستخدمها خط الأنابيب، أو تم إلغاؤها يدويًا في المؤسسة الهدف.
قيود IP تحجب أداة تشغيل CI
لا تشمل نطاقات IP لتسجيل الدخول الخاصة بالمؤسسة أو قيود IP الخاصة بالتطبيق المتصل عنوان IP الحالي لأداة تشغيل CI/CD.
تغيير كلمة المرور أو رمز الأمان
تمت إعادة تعيين كلمة مرور مستخدم التكامل أو رمز الأمان الخاص به، لكن بيانات الاعتماد المخزنة في خط أنابيب CI لم يتم تحديثها لتطابقها.

الحل

  1. أعد المصادقة وحدّث بيانات الاعتماد المخزنة
    أعد ربط تفويض OAuth الخاص بخط أنابيب CI، أو أنشئ جلسة جديدة لمستخدم التكامل.
    sf org login jwt --client-id $CONSUMER_KEY --jwt-key-file server.key --username [email protected] --instance-url https://login.salesforce.com
  2. أضف نطاق IP الخاص بأداة تشغيل CI إلى عناوين IP الموثوقة
    حدّث إعدادات الوصول إلى الشبكة الخاصة بالمؤسسة، أو سياسة تخفيف قيود IP للتطبيق المتصل، للسماح بنطاق IP الخاص بخط الأنابيب.
  3. دوّر بيانات الاعتماد في خط الأنابيب في نفس يوم تغييرها في Salesforce
    حدّث مخزن أسرار CI فورًا كلما تم تغيير كلمة مرور مستخدم التكامل أو رمزه أو تطبيقه المتصل.
من واقع الاستخدام

إزاي Serpent بتمنع ده

تدير Serpent اتصالات المؤسسة وإعادة المصادقة لخطوط أنابيبها الخاصة، لذا تظهر الجلسة المنتهية كرسالة واضحة لإعادة الاتصال بالمؤسسة بدلاً من فشل تسجيل دخول غامض مدفون في سجلات CI. راجع مكتبة أخطاء نشر Salesforce.

إعدادات ربط الـ org وGit في Serpent

الوقاية

استخدم تدفق JWT bearer بدلاً من اسم مستخدم وكلمة مرور مخزنين
قم بمصادقة CI باستخدام تدفق JWT bearer المستند إلى الشهادات الخاص بالتطبيق المتصل، والذي لا تنتهي صلاحيته كما يحدث مع رمز الجلسة أو كلمة المرور المُرمّزة يدويًا.
اضبط تخفيف قيود IP للتطبيق المتصل للسماح بالأتمتة المعروفة
اضبط تخفيف قيود IP بشكل مناسب للتطبيق المتصل الذي يستخدمه CI، بدلاً من مقاومة قيود IP بقائمة سماح مُرمّزة يدويًا ومتغيرة باستمرار.
أرسل تنبيهًا عند تدوير بيانات الاعتماد، لا عند فشل خط الأنابيب فقط
اربط عمليات إعادة تعيين كلمة المرور أو رمز الأمان في Salesforce بإشعار يذكّر الفريق بتحديث أسرار CI في نفس اليوم، قبل أن يفشل التشغيل المجدول التالي.
أسئلة شائعة

INVALID_LOGIN، تمت الإجابة

لماذا يحدث INVALID_LOGIN فقط في CI، وليس عند تسجيل دخولي يدويًا؟
تمر عمليات تسجيل الدخول اليدوية بتدفق المصادقة الثنائية والجلسة الكامل في المتصفح، بينما تصادق خطوط أنابيب CI باستخدام رمز أو جلسة مخزنة يمكن أن تنتهي صلاحيتها بصمت، أو تُلغى، أو تقع خارج قيد IP دون أن يلاحظ أحد حتى التشغيل الآلي التالي.
هل يؤدي تفعيل المصادقة الثنائية لمستخدم التكامل إلى تعطيل تسجيلات دخول CI؟
قد يحدث ذلك إذا كان خط الأنابيب يستخدم مصادقة اسم المستخدم وكلمة المرور، لأن تحديات المصادقة الثنائية لا يمكن أتمتتها عبر السكربتات. يتجنب تدفق JWT bearer والمصادقة المستندة إلى الشهادات هذه المشكلة تمامًا لأنهما لا يمران عبر شاشة تسجيل الدخول التفاعلية.
هل يخبرني هذا الخطأ تحديدًا إن كانت المشكلة في بيانات الاعتماد أم في IP؟
ليس دائمًا بدقة. غالبًا ما يلمّح نص الرسالة إلى ذلك، لكن إذا لم تكن متأكدًا، تحقق أولاً من سجل تسجيل الدخول للتطبيق المتصل وإعدادات قيود IP الخاصة بالمؤسسة، لأن استبعاد كليهما سريع.

ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.

يتم الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف متخصص DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.