День добрый. При запросе по протоколу rtsp к камере сервер требует digest-авторизацию. Ниже пример лога подключения через vlc.
RTSP/1.0 401 Unauthorized
CSeq: 3
WWW-Authenticate: Digest realm="IP Camera(22462)",nonce="a88f568824492211e1129e760e958797", stale="FALSE"
Date: Thu, Feb 28 2019 15:31:00 GMT
Resending...
Sending request: DESCRIBE rtsp://192.168.240.100:554/media2 RTSP/1.0
CSeq: 4
Authorization: Digest username="admin", realm="IP Camera(22462)", nonce="a88f568824492211e1129e760e958797", uri="rtsp://192.168.240.100:554/media2", response="aa8df722ea25d9ddc6d2830d7a780fb2"
User-Agent: LibVLC/3.0.6 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
В итоге клиент авторизуется и получает свой поток. Все хорошо. Но при попытке выполнить то же самое средствами java, response получается другой.
String realm = "IP Camera(22462)";
String nonce = "a88f568824492211e1129e760e958797";
String A1 = "admin"+ ":" + realm + ":" + "admin123";
A1 = DigestUtils.md5Hex(A1);
String A2 = "DESCRIBE" + ":" + "rtsp://192.168.100.240:554/media2";
A2 = DigestUtils.md5Hex(A2);
String response = DigestUtils.md5Hex(A1 + ":" + nonce + ":" + A2);
На выхлопе получаем разный результат.
Причем случай с джавой проверял разными либами, выдаёт одинаково. Для запроса в vlc вводятся те же данные. Нечто похожее видел здесь https://stackoverflow.com/questions/25332235/cant-explain-rtsp-authentication-basic-and-digest, но толком там не объяснили,а в спецификацию пока еще не очень хочется лезть. В чем может быть подвох?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей