SIP呼叫做的比较严格的SIP产商,对客户端发送的每条请求消息都要求鉴权,这里我们以挂断呼叫为例:
上面的报文是一个呼叫挂断的例子,从发送的BYE报文来看,挂断方已经带上了Proxy-Authorization字段,但是代理依然回复了407要求重新认证,这是因为服务端生成的nonce值有一定的生命周期,超时后,服务端会生成一个新的nonce值,要求客户端用这个新的nonce值重新鉴权。这里有一个stale的字段,如果其值为TRUE表示相应鉴权时相应的字符串是大小写敏感的,如果其值为FALSE则反之。
挂断方使用新的nonce值与服务端交互的报文如下:
同时注意有时会遇到服务端鉴权失败的情况,这时特别要注意检查携带的Digest username、realm、nonce、uri携带的值是否正确,笔者就遇到过将呼叫代理鉴权字段中的uri值带错,导致相应鉴权失败的情况。