RTSP ダイジェスト認証のデバッグ: 401 Unauthorized、Nonce、Realm、Basic vs Digest、およびカメラ ログイン ループ

RTSP ダイジェスト認証の失敗、401 未承認ループ、古いノンス値、レルムの不一致、基本カメラ設定とダイジェスト カメラ設定、および URL 認証情報の問題をトラブルシューティングする方法。

rtspダイジェスト認証, 401 無許可, nonce, realm, 基本とダイジェスト, IPカメラログイン, rtsp 診断

RTSP 認証の失敗は、IP カメラのサポートで最も一般的なケースの一部です。ユーザーは、「RTSP 401 Unauthorized」、「RTSP Digest 認証に失敗しました」、「カメラは VLC では動作しますが、NVR では動作しません」、「RTSP Basic vs Digest」、「stale nonce」、「wrong realm」、および「IP カメラ ログイン ループ」を検索します。これは、症状は単純ですが、原因がリクエスト ヘッダーと応答ヘッダーの中に隠されているためです。

RTSP Inspector は、まさにこのクラスの問題向けに構築されています。プレイヤーは「認証に失敗しました」とだけ言うことができます。プロトコル インスペクターは、最初の未認証の「DESCRIBE」、「WWW-Authenticate」チャレンジ、クライアントの「Authorization」応答、ノンス値、レルム、ダイジェスト計算で使用される URI、およびカメラが 2 番目のリクエストを拒否するかどうかを表示できます。

RTSP 認証がわかりにくい理由

多くのカメラは、最初のリクエストでは認証情報を受け入れません。通常のダイジェスト フローは次のとおりです。

  1. クライアントは許可なく「DESCRIBE」を送信します。
  2. カメラが「401 Unauthorized」を返します。
  3. カメラには「WWW-Authenticate: Digest ...」が含まれています。
  4. クライアントはダイジェスト応答を再計算します。
  5. クライアントは「Authorization: Digest ...」を指定して「DESCRIBE」を再度送信します。
  6. カメラはリクエストを受け入れるか、別の「401」を返します。

最初の「401」は必ずしもエラーであるとは限りません。クライアントがダイジェスト認証情報を送信した後に繰り返される「401」が重要な証拠です。

基本カメラ設定とダイジェストカメラ設定

一部のカメラでは、次のような設定が公開されています。

  • 基本認証
  • ダイジェスト認証
  • 基本とダイジェスト
  • ダイジェストのみ
  • 認証なし

クライアントがベーシックのみをサポートしているが、カメラがダイジェストを必要としている場合、ストリームは失敗します。クライアントがダイジェストを送信しても、カメラがベンダー固有のバリアント用に設定されている場合、ストリームも失敗する可能性があります。

このケースをよく説明する検索語:

  • 「RTSP Basic認証カメラ」
  • 「RTSPダイジェスト認証カメラ」
  • 「VLC は動作しますが、アプリは 401 になります」
  • 「NVRカメラの認証に失敗しました」
  • 「ONVIF は機能しますが、RTSP ログインに失敗します」

解決策は、パスワードを再度推測しないことです。まず、カメラが実際にどの認証スキームをアドバタイズしたかを調べます。

レルムの不一致

ダイジェスト「レルム」は認証計算の一部です。クライアントが、提供されたカメラとは異なるレルムを使用して応答を計算すると、認証は失敗します。

これは次の場合に発生する可能性があります。

  • プロキシがチャレンジを書き換えます。
  • ファームウェアはアップグレード後にカメラ領域を変更します。
  • クライアントは以前のチャレンジをキャッシュします。
  • 複数のカメラがリバース プロキシを介して 1 つのホスト名を共有します。
  • アプリは、別のカメラモデルから保存されたプロファイルを使用します。

RTSP Inspector はエラーを具体的にするためにレルムを表示する必要があります。問題は「パスワードが間違っていますか?」ということではありません。しかし、「ダイジェスト応答が生成されたときに、正確にどのレルムと URI が使用されたのでしょうか?」

ノンスと古いノンスの問題

ダイジェスト ナンスはサーバーが提供する値です。カメラによってはすぐに期限切れになってしまう場合があります。一部のカメラはセッションにそれを再利用します。一部のカメラは、再起動、ファームウェアのアップデート、時間のずれ、または試行の失敗が多すぎると、古い nonce を拒否します。

有用な証拠:

  • カメラには stale=true が含まれていますか?
  • クライアントは新しい nonce で再試行しますか?
  • カメラは「401」ごとに異なる nonce を送信しますか?
  • 認証は一度だけ成功しても、後で失敗することはありますか?
  • カメラがアイドル状態になった後、同じ URL は失敗しますか?

カメラが新しいチャレンジを返しても、クライアントが古い nonce を送信し続ける場合、クライアント側のキャッシュが失敗します。カメラが繰り返しのチャレンジを返して有益な進歩がない場合、問題はカメラのファームウェア、ロックアウト ポリシー、または資格情報の不一致である可能性があります。

ダイジェスト認証内の URI の不一致

ダイジェスト認証には、要求された URI が含まれます。微妙な不一致により、ログインが中断される可能性があります。

  • クライアントは「rtsp://192.168.1.10/stream1」に接続します。
  • ダイジェスト応答は「/stream1」に対して計算されます。
  • カメラは「rtsp://192.168.1.10:554/stream1」を想定しています。
  • プロキシは /live/stream1 を転送します。
  • クライアントは正規化された URL を使用して再試行します。

これが、生のリクエスト行が重要である理由です。 DESCRIBE URI、Authorization ヘッダー URI、および最終的なカメラ パスを比較する必要があります。

パスワードだけが原因ではない

サポート チームはパスワードをリセットするのが早すぎることがよくあります。繰り返される「401 Unauthorized」は、次のことを意味する場合もあります。

  • 認証方式が間違っています。
  • ダイジェスト レルムが一致しません。
  • 古くなったノンス。
  • URL パスが一致しません。
  • カメラアカウントにはRTSP権限がありません。
  • ログイン試行に失敗すると、アカウントがロックされます。
  • ユーザー名またはパスワードの特殊文字は URL エンコードされません。
  • クライアントは、リダイレクトまたは再試行された URL から資格情報を削除しました。
  • カメラでは、RTSP にアクセスする前に ONVIF ユーザーを作成する必要があります。

多くの検索はパスワードが間違っているという前提で始まるため、SEO に最適な記事にはこれを明確に記載する必要があります。

RTSP URL の特殊文字

RTSP URL にはインライン認証情報が含まれることがよくあります。

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 を別々に試します。パス、認証情報、Transport を同時に変えると、二回目の成功がどの変更によるものか分かりません。

確認層 保存する証拠 判断する質問
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 で初期化できるか

「メディアが届かない」と「届くが復号できない」を分けます。SETUP と PLAY が成功しても RTP がなければ、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 を保存します。RTP は SSRC、最初と最後のシーケンス、clock rate、欠落数、収録時間を記録します。VLC や別 VMS の成否は差分試験として有用ですが、成功したクライアントが全規則を正しく扱う証明ではありません。

サーバーとクライアントのどちらを調べますか

メソッド拒否、存在しない control URL、不一致 Transport、説明のない SSRC や時計変更はサーバー側を調べます。期限切れ nonce の再利用、Session 欠落、ポートを開かない UDP 要求、各 NAL 終端を access unit 終端とみなす処理はクライアント側を調べます。中間経路の問題では、各結論にパケットと時刻を添えます。

報告前に何を確認しますか

新しい接続で再試験し、二つの時系列を最初の相違点まで比較します。パスワードと完全な Authorization 値を削除し、結論を CSeq、sequence、timestamp に結び付けます。関連する RTSP ガイドで周辺手順を確認し、RTSP Inspectorで RTSP ストリームをローカルに試験してください。カメラ映像を公開サービスへアップロードする必要はありません。

<!-- rtsp-localized-evidence-foundation-v1:end -->