关于手机app之api认证

转载于未知名博客

出于安全kao虑,近期推进一次app和api间通讯的认证的流程。舍弃了app认证这种思路,走的用户授权的思路。

具体流程如下:

就是app第一次启动时,向服务器请求获得accessId 授权id,accessToken 授权token,accessExp 授权过期时间。

接口请求的时候,将参数,时间戳,accessToken哈希,作为sign附加在参数上。(如果上https,只要将accessToken附加返回就好了)

当用户登录的时候,将用户id和accessId关联,存于服务器端。

操作用户数据接口获取到用户id后校验和accessId关联的用户id比较是否一致。

以后手机启动的时候,拿保存的access信息,请求更新接口,获取新的access信息。

kao虑的安全问题:

数据私密性,让数据在传输过程中不可见,避免偷窥狂,解决办法是上https,第一期不做。

数据完整性,防止数据发出后被篡改,解决办法是上https,第一期特么不上https,第二期又不知道在哪里。所以,将所有参数,加上时间戳,和access_token拼接后进行hash得到sign,附加在请求里面。服务端对sign进行校验。保证参数不被篡改。

请求幂等性,一个请求只请求一次有效,例如A给B转账,这个请求调用多次,只会转账一笔。通过accessId,接口,时间戳作为唯一判断来避免重放。

密钥泄漏,app被反编译,密钥丢了怎么办,所以舍弃app授权,改用对用户授权。

内存修改器,app如果直接持有memberId与服务端通讯,假如memberId被修改,防线瞬间就瓦解了,所以不以app持有的memberId为凭证,而是以accessId关联的memberId为准。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,595评论 25 708
  • 1、开启公众号开发者模式 公众平台的技术文档目的为了简明扼要的交代接口的使用,语句难免苦涩难懂,甚至对于不同的读者...
    good7758阅读 1,552评论 0 1
  • 灵宝人有句口头语:“典田卖地忘不了节气。"意为日子再难过,节气不可不随。凡属过节,都要按照不同的节日,吃一次特定名...
    老顽阅读 840评论 0 1
  • 你好,我是尧章! 过去这一年,收获颇丰,辗转换了三份工作,从一个彻头彻尾的理科生变成一只拖延症的广告人,除了浪得飞...
    尧章阅读 347评论 0 0