1. rtsp摘要认证协议流程

RTSP协议,全称Real Time Streaming Protocol,是应用层的协议,它主要实现的功能是传输并控制具有实时特性的媒体流,如音频(Audio)和视频(Video)。Rtsp认证主要分为两种:基本认证(basic authentication)和摘要认证( digest authentication )。基本认证是http 1.0提出的认证方案,其消息传输不经过加密转换因此存在严重的安全隐患。摘要认证是http 1.1提出的基本认证的替代方案,其消息经过MD5哈希转换因此具有更高的安全性。下面主要介绍摘要认证:

摘要认证 Digest authentication

客户端第一次发起连接请求:

OPTIONS rtsp://192.168.123.158:554/11 RTSP/1.0

CSeq: 1

User-Agent: LibVLC/2.0.5(LIVE555 Streaming Media v2012.09.13)

服务器端返回服务端信息及public方法:

RTSP/1.0 200 OK

Server: HiIpcam/V100R003 VodServer/1.0.0

Cseq: 1

Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY,GET_PARAMETER

客户端再次发起连接:

DESCRIBE rtsp://192.168.123.158:554/11 RTSP/1.0

CSeq: 2

User-Agent: LibVLC/2.0.5(LIVE555 Streaming Media v2012.09.13)

Accept: application/sdp

服务器端返回401错误,提示未认证并以nonce质询:

RTSP/1.0 401 Unauthorized

Server: HiIpcam/V100R003 VodServer/1.0.0

Cseq: 2

WWW-Authenticate:Digest realm="HipcamRealServer",

nonce="3b27a446bfa49b0c48c3edb83139543d"

客户端以用户名,密码,nonce,HTTP方法,请求的URI等信息为基础产生response信息进行反馈(计算方法参考说明):

DESCRIBErtsp://192.168.123.158:554/11 RTSP/1.0

CSeq: 3

Authorization: Digest username="admin",realm="Hipcam RealServer", nonce="3b27a446bfa49b0c48c3edb83139543d",uri="rtsp://192.168.123.158:554/11", response="258af9d739589e615f711838a0ff8c58"

User-Agent: LibVLC/2.0.5(LIVE555 Streaming Media v2012.09.13)

Accept: application/sdp

服务器对客户端反馈的response进行校验,通过则返回如下字段:

RTSP/1.0 200 OK

Server: HiIpcam/V100R003 VodServer/1.0.0

Cseq: 3

Content-Type: application/sdp

Cache-Control: must-revalidate

Content-length: 306

Content-Base: rtsp://192.168.123.158:554/11/

v=0

o=StreamingServer 3331435948 1116907222000 IN IP4192.168.123.158

s=\11

c=IN IP4 0.0.0.0

b=AS:1032

t=0 0

a=control:*

m=video 0 RTP/AVP 96

b=AS:1024

a=control:trackID=0

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1;sprop-parameter-sets=Z0LgHtoCgPRA,aM4wpIA=

a=framesize:96 640-480

然后,客户端发起建立连接请求(用同样的方法计算response):

SETUP rtsp://192.168.123.158:554/11/trackID=0 RTSP/1.0

CSeq: 4

Authorization: Digest username="admin", realm="HipcamRealServer", nonce="3b27a446bfa49b0c48c3edb83139543d",uri="rtsp://192.168.123.158:554/11/", response="7251f3cd9dec6d89fc948e4c50e0b1cf"

User-Agent: LibVLC/2.0.5(LIVE555 Streaming Media v2012.09.13)

Transport:RTP/AVP;unicast;client_port=4074-4075

服务器端验证客户端返回的response字段,通过则返回通信参数:

RTSP/1.0 200 OK

Server: HiIpcam/V100R003 VodServer/1.0.0

Cseq: 4

Session: 430786884314920

Cache-Control: must-revalidate

Transport: RTP/AVP;unicast;mode=play;source=192.168.123.158;client_port=4074-4075;server_port=5000-5001;ssrc=542289ec

最后,客户端发起播放请求(同样需计算response字段):

PLAY rtsp://192.168.123.158:554/11/ RTSP/1.0

CSeq: 5

Authorization: Digest username="admin", realm="HipcamRealServer", nonce="3b27a446bfa49b0c48c3edb83139543d",uri="rtsp://192.168.123.158:554/11/",response="9bfb25badcf52e6826cae5688e26cf6d"

User-Agent: LibVLC/2.0.5(LIVE555 Streaming Media v2012.09.13)

Session: 430786884314920

Range: npt=0.000-

服务器端校验response字段,通过则返回视频数据。

说明:

1. 请求头字段说明

例如:OPTIONS rtsp://192.168.123.158:554/11RTSP/1.0

字段依次包含:public_method,uri地址,协议版本

 

2. response字段的计算

RTSP客户端应该使用username + password并计算response如下:

(1)当password为MD5编码,则

response = md5(password:nonce:md5(public_method:url));

(2)当password为ANSI字符串,则

response= md5(md5(username:realm:password):nonce:md5(public_method:url));

客户端在每次发起不同的请求方法时都需要计算response字段,同样在服务器端校验时也默认采取同样的计算方法。

2. RTSP Digest Authentication报文例子

下面是VLC请求RTSP 服务器的交互报文(URL:rtsp:// admin:admin@192.168.60.62/defaultPrimary?streamType=u):

OPTIONS rtsp://192.168.60.62:554/defaultPrimary?streamType=u RTSP/1.0
CSeq: 3
Authorization: Digest username="admin", realm="Avigilon-13415614", nonce="1N9A1isAlc05nlS4XuSpZ523rA5tC280mG80upbf050000", uri="rtsp://192.168.60.62:554/defaultPrimary?streamType=u", response="2c514169823e91d57368baff11ebfef8"
User-Agent: LibVLC/2.0.5 (LIVE555 Streaming Media v2012.09.13)

RTSP/1.0 200 OK
Server: AvigilonOnvifNvt/2.4.4.38
Authentication-Info: qop=auth, rspauth="969d1dbab73198a859f41574cf5681fe", cnonce="", nc=00000000
CSeq: 3
Content-Length: 0
Date: Sat, 01 Jan 2011 00:24:27 GMT
Public: OPTIONS, DESCRIBE, SETUP, SET_PARAMETER, GET_PARAMETER, PLAY, PAUSE, TEARDOWN

DESCRIBE rtsp://192.168.60.62:554/defaultPrimary?streamType=u RTSP/1.0
CSeq: 4
Authorization: Digest username="admin", realm="Avigilon-13415614", nonce="1N9A1isAlc05nlS4XuSpZ523rA5tC280mG80upbf050000", uri="rtsp://192.168.60.62:554/defaultPrimary?streamType=u", response="45633280f1d55bf1810cb579180d2265"
User-Agent: LibVLC/2.0.5 (LIVE555 Streaming Media v2012.09.13)
Accept: application/sdp

RTSP/1.0 200 OK
Server: AvigilonOnvifNvt/2.4.4.38
Authentication-Info: qop=auth, rspauth="969d1dbab73198a859f41574cf5681fe", cnonce="", nc=00000000
CSeq: 4
Content-Length: 668
Content-Type: application/sdp
Date: Sat, 01 Jan 2011 00:24:27 GMT

v=0
o=- 1293841467625 1293841467625 IN IP4 192.168.60.62
s=Live
t=0 0
m=audio 0 RTP/AVP 0
c=IN IP4 192.168.60.62
a=control:rtsp://192.168.60.62/defaultPrimary/mic0/trackID=1
m=video 0 RTP/AVP 96
c=IN IP4 192.168.60.62
a=control:rtsp://192.168.60.62/defaultPrimary/cam0/trackID=2
a=fmtp:96 packetization-mode=0; profile-level-id=42A01E; sprop-parameter-sets=Z00AKZpmA8ARPy4C1AQEBQAAAwPoAADqYOhlBQu8uNDKChd5cKA=,aO48gA==
a=rtpmap:96 H264/90000
a=x-avg-params:96 source-height=1080; source-width=1920
m=application 0 RTP/AVP 98
c=IN IP4 192.168.60.62
a=control:rtsp://192.168.60.62/defaultPrimary/metadata0/trackID=1
a=rtpmap:98 vnd.onvif.metadata/90000

SETUP rtsp://192.168.60.62/defaultPrimary/mic0/trackID=1 RTSP/1.0
CSeq: 5
Authorization: Digest username="admin", realm="Avigilon-13415614", nonce="1N9A1isAlc05nlS4XuSpZ523rA5tC280mG80upbf050000", uri="rtsp://192.168.60.62:554/defaultPrimary?streamType=u", response="1bf97fd72be8268c087cc9921ed789de"
User-Agent: LibVLC/2.0.5 (LIVE555 Streaming Media v2012.09.13)
Transport: RTP/AVP;unicast;client_port=61408-61409

RTSP/1.0 200 OK
Server: AvigilonOnvifNvt/2.4.4.38
Authentication-Info: qop=auth, rspauth="969d1dbab73198a859f41574cf5681fe", cnonce="", nc=00000000
CSeq: 5
Session: vJ0dL0GbIR2m63tHIIPv9L;timeout=60
Transport: RTP/AVP;unicast;destination=192.168.120.32;client_port=61408-61409;server_port=51278-51279;ssrc=7fbfa4bd
Content-Length: 0
Date: Sat, 01 Jan 2011 00:24:27 GMT

PLAY rtsp://192.168.60.62:554/defaultPrimary?streamType=u RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="Avigilon-13415614", nonce="1N9A1isAlc05nlS4XuSpZ523rA5tC280mG80upbf050000", uri="rtsp://192.168.60.62:554/defaultPrimary?streamType=u", response="72aa634c21a51ec77c51115d455d6a4b"
User-Agent: LibVLC/2.0.5 (LIVE555 Streaming Media v2012.09.13)
Session: vJ0dL0GbIR2m63tHIIPv9L
Range: npt=0.000-

RTSP/1.0 200 OK
Server: AvigilonOnvifNvt/2.4.4.38
Authentication-Info: qop=auth, rspauth="969d1dbab73198a859f41574cf5681fe", cnonce="", nc=00000000
CSeq: 7
Session: vJ0dL0GbIR2m63tHIIPv9L
Range: npt=now-
RTP-Info: url=rtsp://192.168.60.62/defaultPrimary/cam0/trackID=2;seq=27800;rtptime=2122794782, url=rtsp://192.168.60.62/defaultPrimary/mic0/trackID=1;seq=53177;rtptime=1279412205
Content-Length: 0
Date: Sat, 01 Jan 2011 00:24:27 GMT

rtsp摘要认证协议流程相关推荐

  1. rtsp摘要认证协议(Response计算方法)

    From: http://m.blog.csdn.net/blog/WTBEE/9001859 1. rtsp摘要认证协议流程 RTSP协议,全称Real Time Streaming Protoco ...

  2. RTSP/RTP/RTCP协议流程及分析

    RTSP(实时流协议) RTSP中使用会话概念代替连接,由于它本身不与传输层绑定,因此RTSP会话在传输层支持TCP与UDP协议发送请求.RTSP客户机和服务器都可以发出请求,本身并不携带传输的媒体数 ...

  3. RTSP基础之RTSP/RTP推流协议流程

    这里分析一下RTSP/RTP 推流信令流程,主要分析工具 EasyDarwin RTSP服务器,wireshark抓包工具,ffmpeg RTSP推流客户端. OPTIONS rtsp://192.1 ...

  4. WebApi接口安全认证——HTTP之摘要认证

    摘要访问认证是一种协议规定的Web服务器用来同网页浏览器进行认证信息协商的方法.它在密码发出前,先对其应用哈希函数,这相对于HTTP基本认证发送明文而言,更安全.从技术上讲,摘要认证是使用随机数来阻止 ...

  5. RTSP鉴权认证之基础认证和摘要认证

    RTSP认证类型 基本认证(basic authentication):http 1.0提出的认证方案,其消息传输不经过加密转换因此存在严重的安全隐患: 摘要认证(digest authenticat ...

  6. Http协议(5)—HTTP摘要认证

    一.摘要认证的改进 1.用摘要保护密码 客户端不发送密码,而是发送一个摘要,服务端只需验证这个摘要是否和密码相匹配 2.单向摘要 a.摘要是一种单向函数,将无限的输入值转化为有限的 b.常见的摘要为M ...

  7. HTTP协议学习---(三)摘要认证

    Http 摘要认证 这个认证可以看做是基本认证的增强版本,使用随机数+密码进行md5,防止通过直接的分析密码MD5防止破解. 摘要访问认证最初由 RFC 2069 (HTTP的一个扩展:摘要访问认证) ...

  8. EasyPusher安卓Android手机直播推送之RTSP流媒体协议流程

    EasyPusher移动端推送同我们平时用的RTSP直播推送流程一样,都是采用标准RTSP/RTP推送流程:ANNOUNCE->SETUP->PLAY->RTP/RTCP->T ...

  9. 关于海康摄像头的摘要认证

    最近在做一个项目时候要用到摄像头人脸抓拍,人脸识别等功能,原本使用海康的SDK就可以解决的,但是我们项目是在arm平台下开发的,而海康的SDK不支持arm平台,无奈联系的海康的技术支持,他们提供的了一 ...

最新文章

  1. JQuery 给DOM控件绑定和移除事件的方法
  2. ibatis多参数的问题
  3. 迪粉汇接入网易云信,打造比亚迪车友亲密沟通利器
  4. Python中的自定义进程和进程池
  5. oracle01507报错,oracle报错ORA-01507
  6. JAVAOOP期末试题
  7. pku 2418 Hardwood Species 字典树
  8. 【Java基础篇】你真的了解构造器吗?
  9. poj 1511 Invitation Cards
  10. S5PV210 软件实现电阻屏两点触摸
  11. ip的增删改查以及网络设定
  12. 如何准备 Java 初级和高级的技术面试
  13. Step By Step(1),Build Convolutional Neural Networks
  14. Java面试题之分布式事务篇
  15. 什么是TTL电平和cmos电平?ttl电平和cmos电平的区别是什么?
  16. keil5 下载器配置
  17. 锁定计算机注册表,如何禁用注册表?Win7注册表锁定bat制作方法
  18. 综合日语第一册第六课
  19. Geometry点线面的初始化
  20. 记忆宫殿心法技法入门

热门文章

  1. css3制作手风琴,CSS3制作手风琴——CSS3 :target的应用
  2. k8s拉取镜像规则_【大强哥-k8s从入门到放弃13】Service详解
  3. 每日写题分享--包含min函数的栈/双栈实现
  4. 网络流建图方法(二)——辅助点(虚点)决策法洛谷 P1361 小M 的作物 Dinic
  5. 一个文本回射C/S程序并讨论:fork、信号处理机制、僵死进程处理
  6. ie input兼容 vue_IE浏览器兼容问题(基于vue)
  7. android做开场动画,Android_Android开场动画类完整实现代码,本文所述实例为在android中开起 - phpStudy...
  8. hdoj--1495--非常可乐(搜索+隐式图)
  9. 《码出高效》学习:TreeMap与红黑树
  10. 网络嗅探与欺骗----函数sniff()、ARP的原理、ARP欺骗、AARP欺骗的中间人攻击