Отладка дайджест-аутентификации RTSP: 401 Unauthorized, Nonce, Realm, Basic vs Digest и циклы входа в систему камеры
Как устранить сбои аутентификации RTSP Digest, 401 несанкционированные петли, устаревшие значения nonce, несоответствие областей, базовые настройки камеры и дайджеста и проблемы с учетными данными URL.
Сбои аутентификации RTSP являются одними из наиболее распространенных случаев поддержки IP-камер. Пользователи ищут «RTSP 401 неавторизованный», «Ошибка аутентификации RTSP Digest», «камера работает в VLC, но не в NVR», «RTSP Basic vs Digest», «устаревший nonce», «неправильная область» и «цикл входа в систему IP-камеры», потому что симптом прост, но причина скрыта внутри заголовков запроса и ответа.
RTSP Inspector создан именно для этого класса проблем. Игрок может сказать только «аутентификация не удалась». Инспектор протокола может показать первый неаутентифицированный DESCRIBE, запрос WWW-Authenticate, ответ клиента на авторизацию, значение nonce, область, URI, используемый при вычислении дайджеста, а также то, отклоняет ли камера второй запрос.
Почему аутентификация RTSP сбивает с толку
Многие камеры не принимают учетные данные по первому запросу. Обычный поток дайджеста:
- Клиент отправляет
DESCRIBEбез авторизации. - Камера возвращает «401 Неавторизованный».
- Камера включает в себя
WWW-Authenticate: Digest.... - Клиент пересчитывает ответ дайджеста.
- Клиент снова отправляет
DESCRIBEсAuthorization: Digest.... - Камера либо принимает запрос, либо возвращает еще один код «401».
Первый 401 не обязательно является ошибкой. Повторяющийся код «401» после того, как клиент отправляет учетные данные дайджеста, является важным доказательством.
Базовые и дайджест-настройки камеры
Некоторые камеры предоставляют такие настройки, как:
- Базовая аутентификация
- Дайджест-аутентификация
- Базовый и дайджест
- Только дайджест
- Нет аутентификации
Если клиент поддерживает только Basic, но камера требует Digest, поток не будет выполнен. Если клиент отправляет дайджест, но камера настроена на вариант, зависящий от поставщика, поток также может завершиться неудачно.
Поисковые запросы, которые часто описывают этот случай:
- «Камера базовой аутентификации RTSP»
- «Камера аутентификации RTSP Digest»
- «VLC работает, но приложение получает ошибку 401»
- «Ошибка аутентификации камеры NVR»
- «ONVIF работает, но вход по RTSP невозможен»
Исправление состоит в том, чтобы больше не угадывать пароль. Сначала проверьте, какую схему аутентификации на самом деле объявила камера.
Несовпадения областей
Область дайджеста является частью расчета аутентификации. Если клиент вычисляет ответ с областью, отличной от предоставленной камеры, аутентификация не удалась.
Это может произойти, когда:
- Прокси переписывает задачу.
- Прошивка меняет область камеры после обновления.
- Клиент кэширует предыдущий вызов.
- Несколько камер используют одно имя хоста через обратный прокси-сервер.
- Приложение использует сохраненный профиль от другой модели камеры.
Инспектор RTSP должен сделать область видимой, чтобы сбой стал конкретным. Вопрос не в том, «неправильный ли пароль?» но «какая именно область и URI использовались при создании ответа дайджеста?»
Nonce и устаревшие проблемы nonce
Digest nonce — это значение, предоставляемое сервером. У некоторых камер срок годности истекает быстро. Некоторые камеры повторно используют его для сеанса. Некоторые камеры отклоняют старые одноразовые номера после перезагрузки, обновления прошивки, отклонения во времени или слишком большого количества неудачных попыток.
Полезные доказательства:
- Включено ли в камере
stale=true? - Клиент повторяет попытку с новым одноразовым номером?
- Отправляет ли камера другой одноразовый номер после каждого «401»?
- Аутентификация срабатывает один раз, а потом происходит сбой?
- Не работает ли тот же URL-адрес после того, как камера простаивает?
Если камера возвращает новый запрос, но клиент продолжает отправлять старый одноразовый номер, ошибка заключается в кэшировании на стороне клиента. Если камера возвращает повторяющиеся запросы без какого-либо полезного прогресса, возможно, проблема связана с прошивкой камеры, политикой блокировки или несоответствием учетных данных.
Несоответствие URI внутри дайджест-аутентификации
Дайджест-аутентификация включает запрошенный URI. Небольшое несоответствие может привести к поломке входа в систему:
- Клиент подключается к
rtsp://192.168.1.10/stream1. - Ответ дайджеста рассчитывается для
/stream1. - Камера ожидает
rtsp://192.168.1.10:554/stream1. - Прокси пересылает
/live/stream1. - Клиент повторяет попытку с нормализованным URL-адресом.
Вот почему так важны необработанные строки запроса. Необходимо сравнить URI DESCRIBE, URI заголовка Authorization и окончательный путь камеры.
Пароль — не единственная причина
Группы поддержки часто сбрасывают пароли слишком рано. Повторяющееся сообщение «401 Unauthorized» также может означать:
- Неправильная схема аутентификации.
- Несоответствие области дайджеста.
- Устаревший одноразовый номер.
- Несоответствие URL-пути.
- Учетная запись камеры не имеет разрешения RTSP.
- Аккаунт заблокирован после неудачных попыток входа.
- Специальные символы в имени пользователя или пароле не кодируются в URL.
- Клиент удалил учетные данные из перенаправленного или повторного URL-адреса.
- Перед доступом по RTSP камере требуется создание пользователя ONVIF.
В лучшей статье по 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 Unauthorized, Nonce, Realm, Basic vs Digest и циклы входа в систему камеры»
Краткий ответ: чёрный экран или одиночный код не доказывает источник сбоя. Надёжная диагностика связывает запрос и ответ RTSP, согласованный Transport, действующую Session, а затем номера последовательности RTP, временные метки и данные RTCP. Для «Отладка дайджест-аутентификации RTSP: 401 Unauthorized, Nonce, Realm, Basic vs Digest и циклы входа в систему камеры» начните с уровня, ближайшего к симптому, но сохраняйте единую временную шкалу, чтобы не смешать управление, сеть и декодирование.
До изменения камеры, межсетевого экрана или VMS создайте небольшой базовый тест. Запишите RTSP URL без пароля, время, путь, запрошенный Transport, ответ сервера и момент первого медиапакета. Проверяйте UDP и TCP interleaved отдельно, если устройство поддерживает оба режима. Не меняйте одновременно путь, учётные данные и транспорт: иначе успешная вторая попытка не покажет решающую переменную.
| Уровень | Сохраняемое доказательство | Вопрос |
|---|---|---|
| RTSP | метод, статус, заголовки, CSeq и Session | Сервер принял именно эту операцию? |
| SDP | control, payload type, clock rate и codec | Описана ожидаемая дорожка? |
| Transport | client_port, server_port или interleaved | Обе стороны используют один канал? |
| RTP | SSRC, sequence, timestamp и marker | Медиаданные идут в объяснимом порядке? |
| RTCP | sender report, CNAME и BYE | Часы, идентичность и конец прослеживаются? |
| Decoder | SPS/PPS/VPS и packetization mode | Полученный payload позволяет инициализацию? |
Разделяйте «медиа не пришло» и «медиа пришло, но не декодируется». Отсутствие RTP после успешных SETUP и PLAY ведёт к проверке UDP, NAT, firewall и ответа Transport. Пробелы последовательности доказывают потерю или перестановку. Непрерывный RTP без изображения переводит расследование к payload type, clock rate, границам кадра и параметрам H.264 или H.265. Эта граница полезнее общего сообщения проигрывателя.
Как написать цитируемый ответ?
Используйте три предложения: последняя успешная операция, первое отсутствующее доказательство и следующий разделяющий тест. Пример: «DESCRIBE, SETUP и PLAY успешны; RTP не приходит на объявленные порты клиента; проверка TCP interleaved отделит блокировку UDP от неверного медиапути». Не обвиняйте камеру или сеть без ответа либо пакета, подтверждающего границу.
Что делает случай воспроизводимым?
Сохраните OPTIONS, DESCRIBE, SETUP и PLAY, SDP, ответ Transport и очищенный Session. Для RTP запишите SSRC, первый и последний sequence, clock rate, число пробелов и длительность. Результат VLC или другой VMS используйте как дифференциальный тест, а не как доказательство правильной реализации всех правил успешным клиентом.
Когда проверять сервер или клиент?
Проверяйте сервер при отказе метода, несуществующем control URL, несовместимом Transport или необъяснимой смене SSRC или часов. Проверяйте клиент при повторном старом nonce, потере Session, запросе UDP без открытых портов или трактовке каждого конца NAL как конца access unit. Для промежуточной неисправности каждому выводу нужны пакет и время.
Как проверить отчёт?
Повторите тест с нового соединения и сравните временные шкалы до первого отличия. Удалите пароли и полные Authorization. Свяжите выводы с CSeq, sequence или timestamp. Используйте связанный справочник RTSP, а RTSP Inspector — для локальной проверки RTSP-потока и сбора доказательств без загрузки видео в публичный сервис.
Добавьте явный критерий приёмки. На том же URL и с теми же учётными данными управляющие запросы должны завершиться ожидаемыми статусами, RTP — непрерывно идти по выбранному Transport, а после нужных параметров кодека должен восстановиться реальный кадр. Смена Session или SSRC после нового подключения сама по себе не является ошибкой; не объединяйте пакеты старой и новой сессии. Оставшуюся неопределённость формулируйте как непроверенный порт, трек, интервал времени или условие декодера, а не как общий «сбой камеры».
<!-- rtsp-localized-evidence-foundation-v1:end --><!-- rtsp-localized-layer-verdicts-v1:start -->От наблюдения к проверяемому послойному выводу
Для «Отладка дайджест-аутентификации RTSP: 401 Unauthorized, Nonce, Realm, Basic vs Digest и циклы входа в систему камеры» сначала запишите наблюдение, затем интерпретацию. Наблюдение другой инженер может найти в захвате: статус RTSP с CSeq, значение SDP, ответ Transport, пробел последовательности, смена SSRC или разница RTP timestamp и RTCP sender report. «Сервер медленный» или «кодек несовместим» остаётся гипотезой, пока конкретное доказательство не объяснит результат лучше альтернатив.
Разделите путь на границы. Сначала открывается TCP, затем принимается OPTIONS или DESCRIBE. SDP описывает рабочую дорожку, control URL, payload type и clock rate. SETUP требует совместимого Transport, PLAY — действующей Session. После этого проверяются приход RTP, порядок, время и готовность декодера. Остановитесь на первой границе без доказательства успеха.
В сравнении сохраняйте источник и интервал. UDP и TCP interleaved проверяйте с одним путём и учётными данными. Main stream и sub stream — одним клиентом и транспортом. При сравнении VLC с VMS запишите реальные методы, заголовки и URL. Разница control URL, Authorization, Session или keepalive иногда объясняет результат лучше названия программы.
Матрица исключения
Начните с двух гипотез. При отсутствии медиа UDP может блокироваться или сервер может отправлять на другие порты. TCP interleaved проверяет первую; сравнение предложения и ответа Transport, IP и портов — вторую. При повреждённом изображении RTP sequence отделяет потери от неполной инициализации, а SPS/PPS/VPS перед первым frame проверяет параметры codec.
Для гипотезы запишите подтверждающее и опровергающее доказательство. Утверждение, которое нельзя опровергнуть пакетом, слишком широко. «NAT удаляет UDP» опровергается RTP на порту клиента. «Нет параметров H.264» опровергается действительными SPS и PPS перед IDR. Отчёт становится приоритетным выводом, а не списком вариантов.
Не смешивать время
RTSP CSeq упорядочивает транзакции, RTP sequence — пакеты, RTP timestamp — время выборки, capture clock — приход в точку наблюдения. Это разные часы. Неравномерный приход не доказывает drift; скачок timestamp без sequence не доказывает потерю. RTCP sender report связывает часы RTP аудио и видео с общей опорой.
Пакет приёмки
Закройте случай, когда исправление повторяется в новом соединении с одним документированным изменением. Укажите входы, последнюю успешную границу, первое отсутствующее доказательство, изменение, результат и открытые тесты. Приложите короткий transcript или статистику. Скройте секреты, но сохраните CSeq, очищенную Session, SSRC и интервал.
Устранение неполадок RTSP помогает повторить порядок, а отчёты RTSP Inspector передают доказанную границу команде камеры, сети или VMS.
<!-- rtsp-localized-layer-verdicts-v1:end -->