تصحيح أخطاء مصادقة ملخص RTSP: 401 غير مصرح به، وNonce، وRealm، وBasic vs Digest، وحلقات تسجيل الدخول إلى الكاميرا
كيفية استكشاف أخطاء فشل مصادقة RTSP Digest، والحلقات غير المصرح بها 401، وقيم nonce التي لا معنى لها، وعدم تطابق المجال، وإعدادات الكاميرا Basic vs Digest، ومشكلات اعتماد عنوان URL.
يعد فشل مصادقة RTSP من أكثر حالات دعم كاميرا IP شيوعًا. يبحث المستخدمون عن "RTSP 401 Unauthorized"، و"فشلت مصادقة RTSP Digest"، و"تعمل الكاميرا في VLC ولكن ليس NVR"، و"RTSP Basic vs Digest"، و"nonce التي لا معنى لها"، و"المجال الخاطئ"، و"حلقة تسجيل الدخول إلى كاميرا IP" لأن العرض بسيط ولكن السبب مخفي داخل رؤوس الطلب والاستجابة.
تم تصميم RTSP Inspector خصيصًا لهذه الفئة من المشكلات. يمكن للاعب أن يقول فقط "فشلت المصادقة". يمكن لمفتش البروتوكول إظهار أول DESCRIBE غير مصادق عليه، وتحدي WWW-Authenticate، واستجابة العميل Authorization، وقيمة nonce، والمجال، وURI المستخدم في حساب الملخص، وما إذا كانت الكاميرا ترفض الطلب الثاني.
لماذا تعتبر مصادقة RTSP مربكة؟
لا تقبل العديد من الكاميرات بيانات الاعتماد عند الطلب الأول. تدفق الملخص الطبيعي هو:
- يرسل العميل "DESCRIBE" بدون تصريح.
- تُرجع الكاميرا "401 غير مصرح به".
- تشتمل الكاميرا على
WWW-Authenticate: Digest .... - يقوم العميل بإعادة حساب استجابة الملخص.
- يرسل العميل "الوصف" مرة أخرى مع "التفويض: الملخص ...".
- تقبل الكاميرا الطلب أو تقوم بإرجاع "401" آخر.
الأول 401 ليس بالضرورة خطأ. يعد "401" المتكرر بعد أن يرسل العميل بيانات اعتماد الملخص هو الدليل المهم.
إعدادات الكاميرا الأساسية مقابل الملخص
تعرض بعض الكاميرات إعدادًا مثل:
- المصادقة الأساسية
- مصادقة الملخص
- الأساسية والملخص
- هضم فقط
- لا المصادقة
إذا كان العميل يدعم Basic فقط ولكن الكاميرا تتطلب Digest، فسيفشل الدفق. إذا أرسل العميل ملخصًا ولكن تم تكوين الكاميرا لمتغير خاص بالمورد، فقد يفشل الدفق أيضًا.
مصطلحات البحث التي تصف هذه الحالة غالبًا:
- "كاميرا المصادقة الأساسية RTSP"
- "كاميرا المصادقة RTSP Digest"
- "يعمل VLC ولكن التطبيق يحصل على 401"
- "فشلت مصادقة كاميرا NVR"
- "يعمل ONVIF ولكن فشل تسجيل الدخول إلى RTSP"
الحل هو عدم تخمين كلمة المرور مرة أخرى. قم أولاً بفحص نظام المصادقة الذي أعلنت عنه الكاميرا بالفعل.
عالم غير متطابق
يعد "مجال" الملخص جزءًا من حساب المصادقة. إذا قام العميل بحساب الاستجابة بمجال مختلف عن الكاميرا المتوفرة، فستفشل المصادقة.
يمكن أن يحدث هذا عندما:
- الوكيل يعيد كتابة التحدي.
- تغير البرامج الثابتة مجال الكاميرا بعد الترقية.
- يقوم العميل بتخزين التحدي السابق.
- تشترك الكاميرات المتعددة في اسم مضيف واحد من خلال وكيل عكسي.
- يستخدم التطبيق ملفًا شخصيًا محفوظًا من طراز كاميرا مختلف.
يجب على مفتش RTSP أن يجعل المجال مرئيًا حتى يصبح الفشل ملموسًا. السؤال ليس "هل كلمة المرور خاطئة؟" ولكن "ما هو المجال المحدد وURI الذي تم استخدامه عند إنشاء استجابة الملخص؟"
مشاكل nonce والتي لا معنى لها
يعتبر Digest nonce قيمة مقدمة من الخادم. بعض الكاميرات تنتهي صلاحيتها بسرعة. تعيد بعض الكاميرات استخدامها لجلسة ما. ترفض بعض الكاميرات الأرقام القديمة بعد إعادة التشغيل أو تحديث البرنامج الثابت أو انحراف الوقت أو العديد من المحاولات الفاشلة.
أدلة مفيدة:
- هل تتضمن الكاميرا "قديمة = حقيقية"؟
- هل يقوم العميل بإعادة المحاولة باستخدام رقم جديد؟
- هل ترسل الكاميرا رقمًا مختلفًا بعد كل "401"؟
- هل تعمل المصادقة مرة واحدة ثم تفشل لاحقًا؟
- هل يفشل عنوان URL نفسه بعد أن تكون الكاميرا في وضع الخمول؟
إذا أعادت الكاميرا تحديًا جديدًا لكن العميل استمر في إرسال الرقم القديم، فهذا يعني أن الفشل هو التخزين المؤقت من جانب العميل. إذا أعادت الكاميرا تحديات متكررة دون أي تقدم مفيد، فقد تكون المشكلة هي البرامج الثابتة للكاميرا، أو سياسة القفل، أو عدم تطابق بيانات الاعتماد.
عدم تطابق URI داخل مصادقة الملخص
تتضمن مصادقة الملخص معرف URI المطلوب. قد يؤدي عدم التطابق الدقيق إلى تعطيل تسجيل الدخول:
- يتصل العميل بـ "rtsp://192.168.1.10/stream1".
- يتم حساب استجابة الملخص لـ
/stream1. - تتوقع الكاميرا
rtsp://192.168.1.10:554/stream1. - إعادة توجيه الوكيل
/live/stream1. - يقوم العميل بإعادة المحاولة باستخدام عنوان URL تمت تسويته.
هذا هو سبب أهمية خطوط الطلب الأولية. ينبغي مقارنة عنوان URI "الوصف" وعنوان URI لرأس "التفويض" والمسار النهائي للكاميرا.
كلمة المرور ليست هي السبب الوحيد
غالبًا ما تقوم فرق الدعم بإعادة تعيين كلمات المرور في وقت مبكر جدًا. تكرار "401 غير مصرح به" يمكن أن يعني أيضًا:
- نظام مصادقة خاطئ.
- عدم تطابق عالم الملخص.
- لا معنى لها.
- مسار URL غير متطابق.
- حساب الكاميرا ليس لديه إذن RTSP.
- تم قفل الحساب بعد محاولات تسجيل الدخول الفاشلة.
- الأحرف الخاصة في اسم المستخدم أو كلمة المرور ليست مشفرة لعنوان URL.
- قام العميل بتجريد بيانات الاعتماد من عنوان URL المعاد توجيهه أو إعادة محاولته.
- تتطلب الكاميرا إنشاء مستخدم ONVIF قبل الوصول إلى RTSP.
يجب أن تقول أفضل مقالة عن تحسين محركات البحث (SEO) ذلك بوضوح لأن العديد من عمليات البحث تبدأ بافتراض أن كلمة المرور خاطئة.
أحرف خاصة في عناوين URL لـ RTSP
غالبًا ما تحتوي عناوين URL لـ RTSP على بيانات اعتماد مضمّنة:
rtsp://user:password@camera.example.local:554/stream1
Better diagnostics separate:
- URL parsing.
- Authentication challenge.
- Digest calculation.
- Camera authorization decision.
What to capture
For a useful RTSP authentication report, collect:
Diagnosis workflow
Use this process:
Final diagnosis
<!-- rtsp-localized-evidence-foundation-v1:start -->خطة إثبات عملية لموضوع «تصحيح أخطاء مصادقة ملخص RTSP: 401 غير مصرح به، وNonce، وRealm، وBasic vs Digest، وحلقات تسجيل الدخول إلى الكاميرا»
الإجابة المباشرة هي أن تشخيص بث كاميرا لا يعتمد على ظهور صورة أو على رمز خطأ منفرد. يجب ربط النتيجة بطلب RTSP وردّه، وباختيار Transport، وبهوية جلسة صالحة، ثم بأرقام تسلسل RTP والطوابع الزمنية وبيانات RTCP عند وصول الوسائط. في موضوع «تصحيح أخطاء مصادقة ملخص RTSP: 401 غير مصرح به، وNonce، وRealm، وBasic vs Digest، وحلقات تسجيل الدخول إلى الكاميرا» ابدأ بأقرب طبقة إلى العرض الظاهر، لكن احتفظ بسجل زمني واحد حتى لا تختلط مشكلة التحكم بمشكلة الشبكة أو برنامج فك الترميز.
أنشئ حالة اختبار صغيرة قبل تغيير إعدادات الكاميرا أو الجدار الناري. دوّن عنوان RTSP بعد إخفاء كلمة المرور، ووقت الاختبار، واسم المسار، ونوع النقل المطلوب، ورد الخادم، وأول لحظة تصل فيها الوسائط. نفّذ محاولة واحدة عبر UDP وأخرى عبر TCP interleaved عندما يسمح الجهاز بذلك. لا تغيّر عنوان المسار وبيانات الاعتماد والنقل في التجربة نفسها، لأن نجاح المحاولة التالية لن يوضح أي متغير أصلح العطل.
| طبقة الفحص | الدليل الذي يجب حفظه | سؤال القرار |
|---|---|---|
| RTSP | الطلب، الحالة، الرؤوس، CSeq وSession | هل وافق الخادم على العملية نفسها؟ |
| SDP | control وpayload type وclock rate وcodec | هل وصف الخادم المسار الذي سيُستقبل؟ |
| Transport | client_port أو interleaved وقيمة server_port | هل يرسل الطرفان عبر القناة نفسها؟ |
| RTP | SSRC والتسلسل والطابع الزمني وmarker | هل تصل وحدات الوسائط بترتيب يمكن تفسيره؟ |
| RTCP | sender report وCNAME وBYE | هل توجد ساعة وهوية ونهاية جلسة قابلة للتتبع؟ |
| Decoder | SPS/PPS/VPS وpacketization mode | هل البيانات الواصلة قابلة للتهيئة وفك الترميز؟ |
افصل دائمًا بين «لم تصل وسائط» و«وصلت وسائط غير قابلة للفك». غياب حزم RTP بعد SETUP وPLAY يشير إلى مسار UDP أو NAT أو جدار ناري أو رد Transport غير متطابق. وصول RTP مع فجوات في التسلسل يثبت فقدًا أو إعادة ترتيب. وصول تسلسل متماسك مع فشل الصورة ينقل التحقيق إلى payload type وclock rate وحدود الإطار ومعلمات H.264 أو H.265. هذه الحدود أهم من رسالة اللاعب العامة لأنها تحدد المالك المحتمل للإصلاح.
كيف تُكتب إجابة قابلة للاقتباس؟
اكتب النتيجة في ثلاث جمل: العملية التي نجحت، أول دليل أخفق، والتجربة التالية التي تفصل بين سببين. مثال البنية هو: «نجح DESCRIBE وSETUP وPLAY؛ لم تصل أي حزمة RTP إلى منافذ العميل المعلن عنها؛ إعادة الاختبار عبر TCP interleaved ستفصل بين حجب UDP وخطأ عنوان المسار». لا تقل إن الكاميرا أو الشبكة «معطلة» من دون حزمة أو رد يثبت الحد.
ما الحد الأدنى لإعادة إنتاج المشكلة؟
احتفظ بنسخة من تبادل OPTIONS وDESCRIBE وSETUP وPLAY، ونص SDP، ورد Transport، ومعرّف Session بعد إخفاء الأسرار. بالنسبة للوسائط، سجّل SSRC وأول وآخر رقم تسلسل ومعدل الساعة وعدد الفجوات ومدة الالتقاط. اذكر هل يعمل VLC أو VMS آخر، لكن تعامل مع ذلك كاختبار فرق لا كدليل أن الطرف الآخر صحيح في كل شيء.
متى يجب فحص الخادم بدل العميل؟
افحص الخادم عندما يرفض العملية بحالة واضحة، أو يغيّر عنوان control إلى مسار غير موجود، أو يعيد Transport لا يطابق العرض، أو يبدّل SSRC والساعة من دون انتقال معلن. افحص العميل عندما يكرر nonce قديمًا، أو يرسل Session مفقودة، أو يطلب UDP ثم لا يفتح المنافذ، أو يفسر marker بوصفه نهاية كل NAL. قد يكون العطل بينهما؛ لذلك يجب أن تبقى الحزمة والوقت جزءًا من التقرير.
كيف تُراجع النتيجة قبل التسليم؟
أعد المحاولة من بداية اتصال جديدة، ثم قارن السجلين عند أول اختلاف فقط. تأكد من أن التقرير لا يحتوي كلمة مرور أو رمز Authorization كاملًا. اربط كل استنتاج برقم CSeq أو رقم تسلسل أو طابع زمني. استخدم دليل RTSP المرتبط للخطوات المجاورة، وارجع إلى RTSP Inspector لمسار اختبار بث RTSP وجمع الأدلة محليًا. لا يحتاج هذا التشخيص إلى رفع تدفق الكاميرا إلى خدمة عامة.
<!-- rtsp-localized-evidence-foundation-v1:end --><!-- rtsp-localized-layer-verdicts-v1:start -->من الملاحظة إلى حكم طبقي قابل للمراجعة
في «تصحيح أخطاء مصادقة ملخص RTSP: 401 غير مصرح به، وNonce، وRealm، وBasic vs Digest، وحلقات تسجيل الدخول إلى الكاميرا» اكتب الملاحظة قبل تفسيرها. الملاحظة هي شيء يمكن لشخص آخر العثور عليه في السجل: حالة RTSP مرتبطة بـCSeq، أو قيمة في SDP، أو رد Transport، أو فجوة بين رقمين متتاليين، أو تغير SSRC، أو اختلاف بين RTP timestamp وRTCP sender report. أما عبارات مثل «الخادم بطيء» و«الترميز غير متوافق» فهي فرضيات حتى تحدد الحزمة التي تجعلها أرجح من البدائل.
قسّم القضية إلى نقاط حدود. الحد الأول هو فتح اتصال TCP. الثاني هو قبول OPTIONS أو DESCRIBE. الثالث هو أن يصف SDP مسارًا وعرضًا يمكن للعميل استخدامهما. الرابع هو SETUP مع Transport متوافق. الخامس هو PLAY مع Session صحيحة. السادس هو وصول RTP، ثم سلامة الترتيب والتوقيت، ثم استعداد برنامج فك الترميز. توقف عند أول حد لا يملك دليل نجاح؛ الأدلة اللاحقة لا تصلح لإخفاء غياب دليل سابق.
عند مقارنة تجربتين، ثبّت المصدر والوقت قدر الإمكان. إذا اختبرت UDP مقابل TCP interleaved، استخدم عنوان المسار وبيانات الاعتماد نفسها. إذا اختبرت main stream مقابل sub stream، أبق النقل والعميل ثابتين. إذا قارنت VLC مع VMS، سجّل الطلبات التي يرسلها كل عميل بدل الاكتفاء بأن أحدهما يعرض صورة. الاختلاف في control URL أو Authorization أو Session أو keepalive قد يفسر النتيجة أكثر من اسم البرنامج.
مصفوفة الاستبعاد
ابدأ بفرضيتين فقط. مثال: لا توجد وسائط بسبب حجب UDP، أو لأن الخادم يرسل إلى منافذ مختلفة. يختبر TCP interleaved الفرضية الأولى، بينما مقارنة عرض Transport بردّه واستخراج عناوين IP والمنافذ تختبر الثانية. بالنسبة للصورة المشوهة، قارن فرضية فقد RTP بفرضية تهيئة codec ناقصة: أرقام التسلسل تفصل الأولى، ووجود SPS/PPS/VPS قبل أول إطار يفصل الثانية.
لكل فرضية اكتب دليلًا مؤيدًا ودليلًا يمكن أن ينفيها. إذا لم توجد حزمة يمكن أن تنفي الادعاء، فهو واسع أكثر من اللازم. «الـNAT أسقط UDP» يمكن نفيه بوصول RTP إلى منفذ العميل؛ «لا توجد معلمات H.264» يمكن نفيه برؤية SPS وPPS صالحتين قبل IDR. هذه الصياغة تمنع التقرير من التحول إلى قائمة احتمالات بلا ترتيب.
التعامل مع الزمن من دون استنتاج زائد
RTSP CSeq يرتب معاملات التحكم، وRTP sequence يوضح ترتيب الحزم، وRTP timestamp يوضح زمن أخذ عينات الوسائط، بينما وقت الالتقاط يوضح وصول الحزمة إلى نقطة الرصد. لا تساوِ هذه الساعات. فرق وقت الوصول لا يثبت انجراف timestamp، وقفزة timestamp لا تثبت فقد حزمة من دون تسلسل. عند مزامنة الصوت والفيديو، استخدم RTCP sender reports لربط ساعات RTP بزمن مشترك، ولا تعتمد على تشابه أرقام timestamp بين clock rates مختلفة.
حزمة القبول النهائية
يُغلق التحقيق عندما يمكن تكرار الإصلاح في اتصال جديد وبإعداد واحد موثق. يجب أن يوضح التقرير المدخلات، وآخر خطوة ناجحة، وأول دليل فاشل، والتغيير، ونتيجة إعادة الاختبار، وما لم يُختبر. أرفق مقطعًا صغيرًا من السجل أو إحصاءات الحزم بدل ملف ضخم غير محدد. أخفِ الأسرار، لكن لا تحذف CSeq أو Session المموهة أو SSRC أو النطاق الزمني الذي يجعل النتيجة قابلة للمراجعة.
إذا بقيت المشكلة، استخدم استكشاف أخطاء RTSP لإعادة بناء التسلسل، أو تقارير RTSP Inspector لتسليم الحد الفاشل إلى فريق الكاميرا أو الشبكة أو VMS.
<!-- rtsp-localized-layer-verdicts-v1:end -->