客户端调用流媒体服务器接口,首先要做的是身份认证,认证通过后才可以调用流媒体服务器的接口。
服务器和客户端通过“挑战->应答”方式(challenge-response)进行身份认证交互,在这个过程中,客户端需要调用两次接口向服务器证明身份。认证过程中不需要传递密码,密码用于签名验证。
身份认证的过如下:
1)客户端使用“用户名”作为参数调用“login1”接口,向服务器发出身份认证请求
1.1)服务器确认用户是否是有效的用户:
1.2)若不是,则不做进一步处理,返回错误信息
1.3)若是,服务器产生一个“随机数(挑战字符串)”发送给客户端
2)客户端使用“用户密码”和“随机数(挑战字符串)”作为输入,按约定的算法生成一个hash值,用该hash值作为 调用“login2”接口的参数,请求login2接口。
2.1)服务器用收到的hash值与自己的计算结果比较,若二者相同,则通过认证;否则,认证失败
2.2)若认证通过,服务器返回“token”给客户端,否者返回错误信息。
userAuth/?request=login1&username=admin
{
"code":0,
"err_desc":"auha3gik9m48l1mh"
}
code 等于0,表示用户有效,此时 err_desc 的内容是返回的挑战字符串(challenge_code)。
code 不等于0,其他值表示错误,此时 err_desc 的内容是错误描述。
返回的挑战字符(challenge_code)串用于下一步认证。
userAuth/?request=login2&username=admin&hash=8c96202be3da1b23a96c4c838eb34d93
hash=md5(md5(password)+challenge_code)
{
"code":0,
"err_desc":"g2ow17rfyf4nxbkg"
}
code 0 表示登录成功,此时 err_desc 的内容是token值,用于后续接口的通信认证。
code >0 其他值表示错误,此时 err_desc 的内容是错误描述。
userAuth/?request=logout&token=vvkphp5ca79c538n
{
"code":0,
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。