接口规范 2. 登录认证

简介: 2.登录认证客户端调用流媒体服务器接口,首先要做的是身份认证,认证通过后才可以调用流媒体服务器的接口。服务器和客户端通过“挑战->应答”方式(challenge-response)进行身份认证交互,在这个过程中,客户端需要调用两次接口向服务器证明身份。

2.登录认证

客户端调用流媒体服务器接口,首先要做的是身份认证,认证通过后才可以调用流媒体服务器的接口。
服务器和客户端通过“挑战->应答”方式(challenge-response)进行身份认证交互,在这个过程中,客户端需要调用两次接口向服务器证明身份。认证过程中不需要传递密码,密码用于签名验证。
身份认证的过如下:
1)客户端使用“用户名”作为参数调用“login1”接口,向服务器发出身份认证请求
1.1)服务器确认用户是否是有效的用户:
1.2)若不是,则不做进一步处理,返回错误信息
1.3)若是,服务器产生一个“随机数(挑战字符串)”发送给客户端
2)客户端使用“用户密码”和“随机数(挑战字符串)”作为输入,按约定的算法生成一个hash值,用该hash值作为 调用“login2”接口的参数,请求login2接口。
2.1)服务器用收到的hash值与自己的计算结果比较,若二者相同,则通过认证;否则,认证失败
2.2)若认证通过,服务器返回“token”给客户端,否者返回错误信息。

2.1.login1接口

  • 用途
    客户端向服务器申请进行身份认证,服务器返回“挑战字符串”给客户端。
  • 请求
    userAuth/?request=login1&username=admin
    username 登录服务器的用户名。
  • 响应
    {
    "code":0,
    "err_desc":"auha3gik9m48l1mh"
    }

    code 等于0,表示用户有效,此时 err_desc 的内容是返回的挑战字符串(challenge_code)。
    code 不等于0,其他值表示错误,此时 err_desc 的内容是错误描述。
    返回的挑战字符(challenge_code)串用于下一步认证。

2.2.login2接口

  • 用途
    对login1接口返回“挑战字符串”进行hash运算,将运算结果提交给服务器,进行身份合法性认证。
  • 请求
    userAuth/?request=login2&username=admin&hash=8c96202be3da1b23a96c4c838eb34d93
    username 登录服务器的用户名。
    hash是使用用户密码和挑战字符串作为输入计算出的md5摘要值(hash),算法如下:
    hash=md5(md5(password)+challenge_code)
    算法描述:首先计算出密码的hash值,然后在生成的密码hash值尾部拼接上挑战字符串形成新的字符串,最后计算这个新字符串的hash值。
    hash算法采用md5算法,生成的摘要采用16进制编码,编码生成的字符采用小写字母。
    例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112
  • 响应
    {
    "code":0,
    "err_desc":"g2ow17rfyf4nxbkg"
    }

    code 0 表示登录成功,此时 err_desc 的内容是token值,用于后续接口的通信认证。
    code >0 其他值表示错误,此时 err_desc 的内容是错误描述。

2.3.logout接口

  • 用途
    退出登录,服务器销毁用户登录信息,作废“token”。
    建议客户端在退出系统时总是调用该接口。
  • 请求
    userAuth/?request=logout&token=vvkphp5ca79c538n
  • 响应
    {
    "code":0,
    }
相关文章
|
存储 SQL NoSQL
MongoDB 6.0 新特性概览
正如发布MongoDB 5.0时承诺的更快发布频率,年度大版本MongoDB 6.0也于2022年正式跟广大数据库爱好者们见面了。目前阿里云MongoDB已经完成了对6.0版本的适配工作,大家可以直接在官网控制台进行购买和尝鲜体验!
MongoDB 6.0 新特性概览
|
SQL 机器学习/深度学习 自然语言处理
达梦(DM) SQL函数相关
讲述 DM 数据库函数
|
存储 人工智能 NoSQL
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
801 12
|
安全 Android开发 开发者
安卓手机系统的优势和劣势分析
【2月更文挑战第8天】 安卓(Android)是目前全球最流行的移动操作系统之一,拥有强大的开源技术和丰富的应用生态系统。本文将从多个维度对安卓系统进行分析,并探讨其优势和劣势。
2477 2
|
设计模式 JSON JavaScript
前端开发人员使用的顶级 Node.js 框架介绍
前端开发人员使用的顶级 Node.js 框架介绍
1640 153
前端开发人员使用的顶级 Node.js 框架介绍
|
缓存 图形学 芯片
CPU避坑指南——1、CPU基础知识-型号
CPU避坑指南——1、CPU基础知识-型号
560 0
|
缓存 JavaScript 前端开发
Nuxt.js实战:Vue.js的服务器端渲染框架
Nuxt.js提供了开发、构建和部署的完整工作流。使用nuxt命令启动开发服务器,nuxt build进行生产构建,nuxt start启动生产服务器
711 0
|
资源调度 JavaScript 前端开发
比 nvm 更好用的 node 版本管理工具
Volta 是一种管理 JavaScript 命令行工具的便捷方式。
813 1
|
XML 测试技术 网络安全
开发工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板
总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成上面几种接口的硬件时序电信号,实现与这几种接口芯片、设备的快速测试。 首先声明一下,大家都是搞硬件开发的,这几种接口当然是很简单的事,但有些时候对于一个新的设备或者芯片的测试,有个现成的工具当然更顺手,节省时间,也更可靠嘛。
|
SQL 机器学习/深度学习 Java
8款最新宝藏IDEA插件「含ChatGPT」,不容错过,赶紧试试吧
工欲善其事必先利其器,Intellij IDEA是一款十分流行的编程工具,不仅提供了非常强大的基础功能,还构建了一套插件市场生态,让用户可以根据自己需要安装插件,提升开发效率,这里介绍几款好用的插件,感兴趣的小伙伴赶紧试试吧!