公司的 mobile app 是外包给其他公司做的,所以现在他们需要我们提供 API 接口进行调试,由于没有 API 开发的经验,所以现在一个比较难把握的问题就是如何实现服务器端与移动 APP 端通信时的用户身份认证问题。
搜集了一些资料,大部分的建议是在服务器端生成一个 token 然后在通信报文的 headers 利用这个 token 来进行验证。
这里有两个问题,首先这样直接生成 token 进行认证的安全性。其次,生成的 token 应该怎么保存呢?存在 DB里面还是哪个地方?(服务器端使用的是 php)

因为本身产品对安全性要求不是特别高,远没有达到网银之类的需求,所以在不考虑使用 oauth 等授权协议基础上,我比较希望知道一些常用的身份验证机制,以保证基本的安全性即可。

再把问题写清楚点:
1.怎么生成安全性比较高的 token
2.token 需不需要设置过期时间(考虑到是 mobile app,所以这个比较难设计,因为很少
有人会在 app 上会 log out 再重新登录)。
3.token 除了存在 db 内,有没有一些更方便合适的方式。

  • mobile
  • app
  • php
  • server
  • 安全
  • 链接
  • 7 评论
  • 更多
默认排序 时间排序

6 个回答

答案对人有帮助,有参考价值 1 答案没帮助,是错误的答案,答非所问
采纳

peixinchen 111  2014年04月29日 回答

  1. APP里预埋一个token,结合时间戳/每次请求的一个随机值randstr,生成一个最终signature,在Server进行验证即可,(安全级别不是很高,但防大部分恶意请求没问题了)。
  2. 如果还需要针对不同用户生成不同的sigature,可以结合手机的DeviceId,在首次请求是上报这个,以后的请求就把DeviceId也作为因子带入sigature的生成里。当然,这个过程也不是绝对安全的。

看你的意思是不需要绝对安全的,所以猜测你的目的是防恶意请求的,以上两种方式应该可以满足了。

  • 链接
  • 4 评论
  • 更多

答案对人有帮助,有参考价值 1 答案没帮助,是错误的答案,答非所问
wenhx 131  2014年04月29日 回答

告诉你一个很好的学习方式,去各大网站,微博、腾讯、Facebook、Google,看他们的OpenApi是怎么实现的,需要提供什么样的参数,你就可以依葫芦画瓢做出来了。

  • 链接
  • 1 评论
  • 更多

答案对人有帮助,有参考价值 1 答案没帮助,是错误的答案,答非所问
远方的落日 63  2014年04月29日 回答

  1. token一般可以用用户名和密码处理后生成。
  2. token过期可做可不做,如果移动端发现token过期则跳到登录界面让用户重新登录即可。
  3. 你是指客户端存token的地点还是服务器端?一般都可以存在数据库中,不过对移动设备来说存在XML中作为键值对更为普遍。
  • 链接
  • 3 评论
  • 更多

答案对人有帮助,有参考价值 1 答案没帮助,是错误的答案,答非所问
_404_MrYes 103  2014年05月07日 回答 · 2014年05月08日 更新

首先回答第三个问题:存在rdb不妥,本来保存的就是临时数据,没有持久化的必要,用缓存即可,memcached/redis均可。

为何说是临时数据token本来是用来做授权的,应当只能允许可信用户使用,假如是长久数据,那么一旦token泄露,就难免会造成伪造访问的风险。

不知道提主的应用是用什么做用户认证,假定是传统的用户名密码认证方式,其实可以参考http的session,认证通过后生成的sessionid信息其实就可以作为后续访问的token。用户每次请求是携带uid+sid信息来即可,通过sid反查uid或者uid查询sid,然后匹配即可。在token超时时让用户重新来申请即可。对于移动端,建议走https通道。

如何生成安全性高的token,常规的签名算法就可以了,毕竟是不可逆的,原串组合方式不泄露就行,md5的话记得加盐。

对于在app中内置token的做法不建议。首先,内置的token所有应用统一呢?这样获取到了token,基本就可以伪造了,不同的设备不同呢?其实也差不多。而且这样实现起来也比较负责,因为server端要进行验证,猜测应当是用对称加密算法,签名验证?其实最大的疑问是真能用来授权么?我看题主提到了多账户的问题,那么设备与用户就不是一一对应的关系。

  • 链接
  • 5 评论
  • 更多

答案对人有帮助,有参考价值 0 答案没帮助,是错误的答案,答非所问
web_focus 86  2014年04月30日 回答

最简单用session,业务层上不用做太大的变动,呵呵。

  • 链接
  • 1 评论
  • 更多

答案对人有帮助,有参考价值 0 答案没帮助,是错误的答案,答非所问
小熊油耗 30  4月3日 回答

应该采用 OAuth 2.0 Client Credentials Grant(最容易),或者 JSON Web Token模型(安全性更高)

转载:http://segmentfault.com/q/1010000000486648

移动 APP 端与服务器端用户身份认证的安全方案相关推荐

  1. 构建具有用户身份认证的 React + Flux 应用程序

    序言:这是一篇内容详实的 React + Flux 教程,文章主要介绍了如何使用 API 获取远程数据以及如何使用 JSON Web Tokens 进行用户身份认证.在阅读本文之后,我一直使用文章介绍 ...

  2. 构建具有用户身份认证的 Ionic 应用

    序言:本文主要介绍了使用 Ionic 和 Cordova 开发混合应用时如何添加用户身份认证.教程简易,对于 Ionic 入门学习有一定帮助.因为文章是去年发表,所以教程内关于 Okta 的一些使用步 ...

  3. 区块链BaaS云服务(36)欧盟“用户身份认证”ESSIF

    1.用户身份认证 ESSIF (European Self Sovereign identity framework ) 1.1 目前问题 数据孤岛.数据共享. 1.2 目前解决方法 2. 区块链解决 ...

  4. 使用数据库进行用户身份认证

    //使用数据库进行用户身份认证 //1.加载驱动程序 Class.forName("com.mysql.jdbc.Driver"); System.out.println(&quo ...

  5. Python控制流程语句实现各种小功能(用户身份认证、百分制转换等级制、英寸与厘米的转换、三角形的周长和面积、九九乘法表……)

    目录 控制流程语句 用户身份认证 百分制转换等级制 英寸与厘米的转换 输入三条边长,计算三角形的周长和面积 计算1~100相加 猜数字游戏 电脑生成1-10之间的数字 九九乘法表 打印三角形嵌套for ...

  6. HDFS权限管理、用户身份认证和数据访问授权、UGO权限管理、umask权限掩码、UGO权限相关命令、Web页面修改UGO权限

    HDFS权限管理 1.1 总览概述 作为分布式文件系统,HDFS也集成了一套兼容POSIX的权限管理系统.客户端在进行每次文件操时,系统会从用户身份认证和数据访问授权两个环节进行验证: 客户端的操作请 ...

  7. shiro中的验证用户身份认证以及授权

    目录 1.运用shiro进行用户身份认证: 1.1导入基于Shiro的数据库脚本 1.2.引入依赖(shiro-1.4.1) shiro-core  shiro-web  shiro-spring 1 ...

  8. 转:实例学习PHP程序对用户身份认证实现两种方法

    用户在设计和维护站点的时候,经常需要限制对某些重要文件或信息的访问.通常,我们可以采用内置于WEB服务器的基于HTTP协议的用户身份验证机制. 当访问者浏览受保护页面时,客户端浏览器会弹出对话窗口要求 ...

  9. Spring Security关于用户身份认证与授权

    Spring Security是用于解决认证与授权的框架. 创建spring项目,添加依赖 <!-- Spring Boot Security:处理认证与授权 --><depende ...

最新文章

  1. 基于python的快速傅里叶变换FFT(一)
  2. python appium 并行多设备_学会使用python启动多个appium server,然后获取多台设备的driver...
  3. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法
  4. zookeper安装_ZooKeeper安装和配置
  5. RMAN报错:ORA-19573: 无法获得 exclusive 入队
  6. freecplus框架-Oracle数据库操作
  7. shell——脚本实现数据库备份
  8. Jmeter系列之常用组件(一)
  9. UVA 11423 - Cache Simulator (树状数组)
  10. maven命令-P 参数引发的思考
  11. 对通用查询组件初始化组织过滤条件
  12. 微贷网 Java_关于Java集合的小抄
  13. python全局解释器锁 tensorflow_《深度剖析CPython解释器》25. 解密Python中的多线程(第一部分):初识GIL、以及多个线程之间的调度机制...
  14. OpenCV-图像处理(22、像素重映射(cv::remap))
  15. 从零开始搭建EasyDarwin环境——git的安装下载及拉取EasyDarwin代码运行
  16. 【ClearCase 学习笔记 】之(1/4)CC四大功能概述
  17. windows下解压xxx.war文件
  18. 转动惯量和电机的选型
  19. win7 与xp 互联步骤
  20. 关于使用Git pull出现冲突“error: Your local changes to the following files would be overwritten by merge”解决方案

热门文章

  1. Macbook Pro:如何彻底卸载MySQL
  2. Tomcat Servlet 工作原理
  3. eks安装kubectl
  4. 【清单】搜索引擎使用大法
  5. Spring+mqtt 搭建物联网平台服务端
  6. python资源管理错误漏洞_Python 资源管理错误漏洞|CVE-2019-9674|CNNVD-202002-041|互联网安全漏洞库 | 指尖安全 | 垂直互联网安全媒体...
  7. 项目5 子域的加入、域的删除
  8. Linux 私房菜————Linux系统基本操作命令(十)|引导程序|服务控制
  9. 西门子200恒压供水梯形图_S7-200 PLC控制的变频调速恒压供水系统设计
  10. OC 使用AVPlayer 简单的实现一个视频播放器