专题资料(2021-2022年)rtsp摘要认证协议Response计算方法.doc
rtsp 摘要认证协议(Response 计算方法)1.rtsp 摘要认证协议流程RTSP 协议,全称 Real Time Streaming Protocol,是应用层的协议,它主要实现的功能是传输并控制具有实时特性的媒体流,如音频(Audio)和视频(Video)。Rtsp 认证主要分为两种:基本认证(basic authentication)和摘要认证(digest authentication)。基本认证是 http 1.0 提出的认证方案,其消息传输不经过加密转换因此存在严重的安全隐患。摘要认证是 http 1.1 提出的基本认证的替代方案,其消息经过 MD5 哈希转换因此具有更高的安全性。下面将以一次与网络摄像机握手的全过程来详细介绍RTSP摘要认证的应用:摘要认证 Digest authenticationplain view plaincopyprint?客户端第一次发起连接请求:OPTIONS rtsp:/192.168.123.158:554/11 RTSP/1.0CSeq:1User-Agent:LibVLC/2.0.5(LIVE555 StreamingMedia v2012.09.13)服务器端返回服务端信息及 public 方法:RTSP/1.0 200 OKServer:HiIpcam/V100R003VodServer/1.0.0Cseq:1Public:OPTIONS,DESCRIBE,SETUP,TEARDOWN,PLAY,GET_PARAMETER客户端再次发起连接:DESCRIBE rtsp:/192.168.123.158:554/11 RTSP/1.0CSeq:2User-Agent:LibVLC/2.0.5(LIVE555 StreamingMedia v2012.09.13)Accept:application/sdp服务器端返回 401 错误,提示未认证并以 nonce 质询:RTSP/1.0401 UnauthorizedServer:HiIpcam/V100R003VodServer/1.0.0Cseq:2WWW-Authenticate:Digestrealm=HipcamRealServer,nonce=3b27a446bfa49b0c48c3edb83139543d客户端以用户名,密码,nonce,HTTP 方法,请求的 URI 等信息为基础产生 response 信息进行反馈(计算方法参考说明):DESCRIBErtsp:/192.168.123.158:554/11 RTSP/1.0CSeq:3Authorization:Digestusername=admin,realm=Hipcam RealServer,nonce=3b27a446bfa49b0c48c3edb83139543d,uri=rtsp:/192.168.123.158:554/11,response=258af9d739589e615f711838a0ff8c58User-Agent:LibVLC/2.0.5(LIVE555 Streaming Mediav2012.09.13)Accept:application/sdp服务器对客户端反馈的 response 进行校验,通过则返回如下字段:RTSP/1.0 200 OKServer:HiIpcam/V100R003VodServer/1.0.0Cseq:3Content-Type:application/sdpCache-Control:must-revalidateContent-length:306Content-Base:rtsp:/192.168.123.158:554/11/v=0o=StreamingServer 3331435948 1116907222000 INIP4192.168.123.158s=11c=IN IP4 0.0.0.0b=AS:1032t=0 0a=control:*m=video 0 RTP/AVP 96b=AS:1024a=control:trackID=0a=rtpmap:96H264/90000a=fmtp:96packetization-mode=1;sprop-parameter-sets=Z0LgHtoCgPRA,aM4wpIA=a=framesize:96 640-480然后,客户端发起建立连接请求(用同样的方法计算 response):SETUP rtsp:/192.168.123.158:554/11/trackID=0RTSP/1.0CSeq:4Authorization:Digestusername=admin,realm=HipcamRealServer,nonce=3b27a446bfa49b0c48c3edb83139543d,uri=rtsp:/192.168.123.158:554/11/,response=7251f3cd9dec6d89fc948e4c50e0b1cfUser-Agent:LibVLC/2.0.5(LIVE555Streaming Media v2012.09.13)Transport:RTP/AVP;unicast;client_port=4074-4075服务器端验证客户端返回的 response 字段,通过则返回通信参数:RTSP/1.0 200 OKServer:HiIpcam/V100R003VodServer/1.0.0Cseq:4Session:430786884314920Cache-Control:must-revalidateTransport: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.0CSeq:5Authorization:Digest username=admin,realm=HipcamRealServer,nonce=3b27a446bfa49b0c48c3edb83139543d,uri=rtsp:/192.168.123.158:554/11/,response=9bfb25badcf52e6826cae5688e26cf6dUser-Agent:LibVLC/2.0.5(LIVE555Streaming Media v2012.09.13)Session:430786884314920Range: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字段,同样在服务器端校验时也默认采取同样的计算方法。3.http 状态码及含义状态代码状态信息含义100Continue初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1 新)101Switching Protocols服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)200OK一切正常,对 GET 和 POST 请求的应答文档跟在后面。201Created服务器已经创建了文档,Location 头给出了它的 URL。202Accepted已经接受请求,但处理尚未完成。203Non-Authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1 新)。204No Content没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而 Servlet 可以确定用户文档足够新,这个状态代码是很有用的。205Reset Content没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1 新)。206Partial Content客户发送了一个带有 Range 头的 GET 请求,服务器完成了它(HTTP 1.1 新)。300Multiple Choices客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location 应答头指明。301Moved Permanently客户请求的文档在其他地方,新的 URL 在 Location 头中给出,浏览器应该自动地访问新的 URL。