网站图片有什么要求吗,安卓优化大师最新版下载,网络营销方案内容,电商网站用什么做的我的音视频/流媒体开源项目(github) SIP系列目录
目录
一、基本认证(basic)
二、摘要认证(digest)
1、摘要认证(digest) RFC 2069
2、摘要认证(digest) RFC 2617
2.1、未定义qop字段或值为(空)
2.2、qop值为auth
2.3、qop值为auth-int(空)
2.2、qop值为auth
2.3、qop值为auth-int
2.4、RFC 2617认证示例 在《SIP系列三SIP消息格式》中的注册示例里面包含了鉴权本篇文章将详细介绍一下SIP的鉴权机制。 SIP鉴权使用的就是HTTP的鉴权方式很多类HTTP协议使用的都是HTTP的鉴权方式例如RTSP。 HTTP协议包括两种鉴权方式基本认证(basic)和摘要认证(digest)。
一、基本认证(basic) 对用户名和密码以username:password格式进行base64编码添加Authorization字段发起请求 示例
DESCRIBE rtsp://10.175.30.35 RTSP/1.0
CSeq: 7
Authorization: Basic YWRtaW46YWJjZDEyMzQ
Accept: application/sdp “YWRtaW46YWJjZDEyMzQ” 就是username:password 的base64值。服务端对其解码得到用户名和密码进行鉴权。这种认证方式缺乏安全性现在已经不用了。
二、摘要认证(digest) 摘要有过两个版本分别来自RFC 2069和RFC 2617。RFC 2617兼容RFC 2069版本。 摘要认证使用MD5算法计算由用户名、密码和随机数等组成的哈希值通过该哈希值进行身份验证。 摘要认证公式为
A1 ?
A2 ?
D ?
HA1 MD5(A1)
HA2 MD5(A2)
response MD5(HA1:D:HA2) RFC 2069和RFC 2617都是使用上面的公式但对于A1、A2、D的定义RFC 2069和RFC 2617就有所不同了。
1、摘要认证(digest) RFC 2069 RFC 2069中关于A1、A2、D的定义如下
A1 username:realm:password
A2 method:uri # 请求报文中的method和url
D nonce
response MD5(MD5(A1):D:MD5(A2)) 下面是一个使用RFC 2069鉴权的示例(RTSP) ---------------C-S--------------
DESCRIBE rtsp://192.168.10.18:8554/live RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.21 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp---------------S-C--------------
RTSP/1.0 401 Unauthorized
CSeq: 3
WWW-Authenticate: Digest realmsimple-rtsp-server, noncefea261aa3d9310f32b2a9d8e1454fa3c---------------C-S--------------
DESCRIBE rtsp://192.168.10.18:8554/live RTSP/1.0
CSeq: 4
Authorization: Digest usernameadmin, realmsimple-rtsp-server, noncefea261aa3d9310f32b2a9d8e1454fa3c, urirtsp://192.168.10.18:8554/live, response6b6f6d63581262aa05ee4ddada5c3f6b
User-Agent: LibVLC/3.0.21 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp---------------S-C--------------
RTSP/1.0 200 OK
CSeq: 4
Content-Base: rtsp://192.168.10.18:8554/live
Content-type: application/sdp
Content-length: 375v0
o- 91722585321 1 IN IP4 192.168.10.18
cIN IP4 192.168.10.18
t0 0
acontrol:*
mvideo 0 RTP/AVP 96
artpmap:96 H264/90000
afmtp:96 packetization-mode1
acontrol:track0
maudio 0 RTP/AVP 97
artpmap:97 MPEG4-GENERIC/44100/2
afmtp:97 streamtype5;profile-level-id1;modeAAC-hbr;config1390;sizelength13;indexlength3;indexdeltalength3
acontrol:track1
2、摘要认证(digest) RFC 2617 RFC 2617比RFC 2069增加了qop、cnonce、nonce-count(nc)字段。 qop 保护质量quality of protection是一个可选值由服务器提供用来兼容RFC 2069qop字段分几种情况未定义qop字段或值为(空)、auth、auth-int。 cnonce 客户端提供的字符串用以双向认证当有 qop 时必须携带否则必须不带。 nonce-count 客户端提供的访问请求数量包括此次请求采用16进制表示用以校验请求是否重复当有 qop 时必须携带否则必须不携带。
2.1、未定义qop字段或值为(空) 兼容RFC 2069定义和RFC 2069完全一样
A1 username:realm:password
A2 method:uri
D nonce
response MD5(MD5(A1):D:MD5(A2))
2.2、qop值为auth
algorithm的值是MD5:A1 username:realm:password
algorithm的值是MD5-sess:A1 MD5(username:realm:password):nonce:cnonce
A2 method:uri
D nonce:nc:cnonce:qop
response MD5(MD5(A1):D:MD5(A2))
2.3、qop值为auth-int
algorithm的值是MD5:A1 username:realm:password
algorithm的值是MD5-sess:A1 MD5(username:realm:password):nonce:cnonce
A2 method:uri:MD5(entityBody) # entityBody请求的整个消息体
D nonce:nc:cnonce:qop
response MD5(MD5(A1):D:MD5(A2)) 当qop有值但是cnonce、nonce-count没有定义的时候(即服务端首次返回Unauthorized的时候有qop无cnonce、nonce-count(nc)因为cnonce、nonce-count(nc)是客户端提供的)则公式中的D nonce:nc:cnonce:qop用D nonce:::qop代替。
2.4、RFC 2617认证示例 下面是SIP用户代理向服务器注册的鉴权示例
// 第一次请求
REGISTER sip:192.168.2.89 SIP/2.0Via: SIP/2.0/UDP 192.168.2.161:8021
Max-Forwards: 70
From: sip:01062237493192.168.2.89;tagefca469543ce4788a6a6a2c7b66cd01f;epidde4504430d
To: sip:01062237493192.168.2.89
Call-ID: c88a247a74b54a8c9e676bdde3bba6c9192.168.2.161
CSeq: 1 REGISTER
Contact: sip:192.168.2.161:8021;methodsINVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER
User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)
Event: registration
Allow-Events: presence
Content-Length: 0// 服务器授权不通过
SIP/2.0 401 UnauthorizedVia: SIP/2.0/UDP 192.168.2.161:8021
From: sip:01062237493192.168.2.89;tagefca469543ce4788a6a6a2c7b66cd01f;epidde4504430d
To: sip:01062237493192.168.2.89;tag-001893-38ba013ba3dde36e
Call-ID: c88a247a74b54a8c9e676bdde3bba6c9192.168.2.161
CSeq: 1 REGISTER
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
Contact: sip:192.168.2.89:14010
Content-Length: 0
WWW-Authenticate: Digest realm192.168.2.89, qopauth, noncee17d377c3d2d9c343e26576a7fd04738481dfc10, opaque, staleFALSE, algorithmMD5// 客户端第二次发起请求
REGISTER sip:192.168.2.89 SIP/2.0Via: SIP/2.0/UDP 192.168.2.161:8021
Max-Forwards: 70
From: sip:01062237493192.168.2.89;tagefca469543ce4788a6a6a2c7b66cd01f;epidde4504430d
To: sip:01062237493192.168.2.89
Call-ID: c88a247a74b54a8c9e676bdde3bba6c9192.168.2.161
CSeq: 2 REGISTER
Contact: sip:192.168.2.161:8021;methodsINVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER
User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)
Authorization: Digest username01062237493, realm192.168.2.89, qopauth, algorithmMD5, urisip:192.168.2.89, noncee17d377c3d2d9c343e26576a7fd04738481dfc10, nc00000001, cnonce12660455546344082314666316435946, responsef57e47ce03162293b9ced07362ce2b79
Event: registration
Allow-Events: presence
Content-Length: 0// 服务器鉴权通过返回200 OK
SIP/2.0 200 OKVia: SIP/2.0/UDP 192.168.2.161:8021
From: sip:01062237493192.168.2.89;tagefca469543ce4788a6a6a2c7b66cd01f;epidde4504430d
To: sip:01062237493192.168.2.89;tag-001894-a5eb977c8969aa51
Call-ID: c88a247a74b54a8c9e676bdde3bba6c9192.168.2.161
CSeq: 2 REGISTER
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
Contact: sip:192.168.2.161:8021
Content-Length: 0
Expires: 3600 上述例子中opaque 是一个防止重放攻击的机制是服务器在401 Unauthorized响应中生成客户端在后续请求中带上这个字段即可。客户端不理睬这个字段也可以但是有些服务器可能会认证失败。