SIP
认证过程源自
HTTP
摘要式认证
(HTTP Digest Authentication)
,它是一种基于质询的安全机制
:
当服务器收到一个请求,将质询请求的发起者,要求提供相应的身份信息。服务器发出的质询中会包含生成的唯一字符串序列,仅可用于本次质询。请求者和服务器共享同一密码,请求者使用该密码和临时生成的字符串序列得到一个响应值。当请求者再次发送包含这个响应值的请求时,服务器就可以用来对请求进行认证。利用这种机制,密码就可以不用明文的方式传送。
![SIP鉴权—摘要式认证 SIP鉴权—摘要式认证](https://i-blog.csdnimg.cn/blog_migrate/4c335f37c20ed9726b87e9af0e92287b.jpeg)
UAC首先发送一个不包含认证信息的SIP请求消息 (如INVITE或REGISTER)到UAS、代理服务器或注册服务器。若UAS、代理服务器或注册服务器要求认证,则向客户端发回一个请求鉴别的SIP消息。对于UAS和注册服务器,为041;对于代理服务器,为407。这个消息代表了挑战,并且包括了临时值和作用域。对于 UAS和注册服务器,这些值包含在 WWW-Authentcaite 头字段中;对于代理服务器,这些值包含在Proxy-Authenticate头字段中。
UAC根据消息中的质询信息,重新生成一个请求消息发送给UAS、代理服务器或注册服务器。消息中包含鉴权信息,包括用户名以及UAC对用户名、密码、realm、Request-URI和nonce计算生成的加密结果 response.对于 UAS和注册服务器,这些信息包含在Authorization头字段中;对于代理服务器,这些值包含在Porxy-Authorization头字段中。UAS、代理服务器或注册服务器将接收到的respones与自己根据相同算法计算得到的结果比较,若一致,则返回200 0K消息表示认证通过。