APP 接口保护文档

1. 问题
对于后台来说,调用URL时都会判断session是否合法,所以即使别人知道后台URL也无法调用。
但是为移动端提供webservice接口就不一样了。对移动端提供的接口都是RESTful风格的无状态接口,没有传统URL的session概念。如果只是在登录时做身份验证的话,相当于调用接口的权限由App控制。而在网络上,所有接口都对外暴露,任何人只要知道URL了就能调用,试探,甚至通过接口修改数据库。如下图:
 
所以在业务处理之前,登录之前,都需要验证请求是否由合法客户端发出。
2. 全局私钥 APP_KEY
首先,后台和App端,共同内置一个全局私钥APP_KEY,用于生成签名,服务器收到




 (window.cproArray = window.cproArray || []).push({ id: "u2280119" });







接口请求时,先验证签名是否合法,再处理业务。
3. 登录
 









3.1 过程说明
3.1.1 移动端和后台 内置APP_KEY
在app和后台,内置相同的APP_KEY。 3.1.2 移动端 调用申LOGIN_TOKEN申请接口
登录界面,用户输入用户名后,请求接口,申请LOGIN_TOKEN。 3.1.3 后台 生成并返回LOGIN_TOKEN
后台接收到LOGIN_TOKEN请求时,先查询用户名是否存在。如果存在,则查询该用户头像,并为该用户生成LOGIN_TOKEN,返回给移动端。TOKEN使用一次后将失效。
3.1.4 移动端 显示头像,保存LOGIN_TOKEN
登录界面,接收到后台返回后,移动端显示用户头像,并保存LOGIN_TOKEN。等待用户输入密码。 3.1.5 移动端 密码加密
登录界面,用户输入密码,点击登录按钮后,将密码加密。加密过程是: A 将参数APP_KEY,LOGIN_TOKEN,PASSWORD(用户密码)按字母排序,参数中间用&符号连接。如APP_KEY=123&LOGIN_TOKEN=456&PASSWORD=789:
B 将排序之后的字符串用MD5加密,形成密码密文。 C 销毁本地的LOGIN_TOKEN。 3.1.6 移动端 调用登录接口
将用户账号和密码密文做为参数,调用登录接口。 3.1.7 后台 登录验证
后台接收到登录请求后,先查询用户名对应的LOGIN_TOKEN,并将此TOKEN设









置为失效,然后按密码加密逻辑生成密码密文,用生成的密文跟接口参数里的密文对比,相同则登录成功。
3.1.8 后台 生成API_TOKEN
用户登录成功后,为该用户生成API_TOKEN并返回。该TOKEN用于每次接口调用的身份验证,过期时间由后台控制。 3.1.9 移动端 获得登录结果和API_TOKEN
用户登录成功后,获取并保存API_TOKEN。该TOKEN用于每次接口调用的身份验证,过期时间由后台控制。
4. 接口签名验证
 









4.1 过程说明
4.1.1 移动端 生成签名
每次调用接口之前,都需要生成签名。签名生成规则如下:
A 将参数APP_KEY,API_TOKEN,接口参数按首字母排序,参数中间用&符号连接。如API_TOKEN=456&APP_KEY=123&USERID=789:
B 将排序之后的字符串用MD5加密,形成用户签名。 4.1.2 移动端 调用接口
将签名,接口参数,用户名做为参数,调用接口。 4.1.3 后台 验证签名
后台接收到接口请求后,根据用户名获取PAI_TOKEN,然后按签名规则生成签名,并与接口参数签名对比,如果对比相同,则执行业务方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值