谈谈互联网后端基础设施 - 后端技术杂谈 | 飒然Hang
http://www.rowkey.me/blog/2016/08/27/server-basic-tech-stack/
统一认证中心
单点登录系统
但是以上方案的一个问题是由于所有api请求都要经过网关,它很容易成为系统的性能瓶颈。因此,可以采取的方案是:去掉api网关,让业务应用直接对接统一认证中心,在基础框架层面保证每个api调用都需要先通过统一认证中心的认证,这里可以采取缓存认证结果
的方式避免对统一认证中心产生过大的请求压力。
统一认证中心
统一认证中心,主要是对app用户、内部用户、app等的认证服务,包括
用户的注册、登录验证、token鉴权
内部信息系统用户的管理和登录鉴权
App的管理,包括app的secret生成,app信息的验证(如验证接口签名)等。
之所以需要统一认证中心,就是为了能够集中对这些所有app都会用到的信息进行管理,也给所有应用提供统一的认证服务。尤其是在有很多业务需要共享用户数据的时候,构建一个统一认证中心是非常必要的。此外,通过统一认证中心构建移动app的单点登录也是水到渠成的事情(模仿web的机制,将认证后的信息加密存储到本地磁盘中供多个app使用)。
单点登录系统
目前很多大的在线web网站都是有单点登录系统的,通俗的来说就是只需要一次用户登录,就能够进入多个业务应用(权限可以不相同),非常方便用户的操作。而在移动互联网公司中,内部的各种管理、信息系统同样也需要单点登录系统。目前,比较成熟的、用的最多的单点登录系统应该是耶鲁大学开源的CAS, 可以基于https://github.com/apereo/cas/tree/master/cas-server-webapp来定制开发的。此外,国人开源的kisso的这个也不错。基本上,单点登录的原理都类似下图所示:
统一登陆/单点登陆
【大前端之打通账号系统】passport应该如何落地? - 叶小钗 - 博客园
http://www.cnblogs.com/yexiaochai/p/5681066.html
腾讯客服-腾讯开放平台-第三方应用开发安全规范
http://kf.qq.com/info/66897.html
严禁在自己系统处理用户Login,必须使用腾讯公司统一提供的登录接口或者参数openid/openkey
登录。
获取到openid/openkey后必须进行校验才能使用,校验规则请见这里。
前言和名词定义 - 黄页开发者文档中心
http://open.huangye.miui.com/wiki/%E5%89%8D%E8%A8%80%E5%92%8C%E5%90%8D%E8%AF%8D%E5%AE%9A%E4%B9%89
小米帐号互通
:是一种使用系统帐号直接登录的技术,基于Oathu2.0
。
小米账号OAuth 2.0授权 - 黄页开发者文档中心
http://open.huangye.miui.com/wiki/%E5%B0%8F%E7%B1%B3%E8%B4%A6%E5%8F%B7OAuth_2.0%E6%8E%88%E6%9D%83
帐号开放平台接入
方法 - 小米开放平台
http://dev.xiaomi.com/docs/passport/way/
服务上线测试要求 - 黄页开发者文档中心
http://open.huangye.miui.com/wiki/%E6%9C%8D%E5%8A%A1%E4%B8%8A%E7%BA%BF%E6%B5%8B%E8%AF%95%E8%A6%81%E6%B1%82
提交审核前的自查列表:
我们提供了一份checklist
,帮助开发者自我检查,当所有条件都符合后,就达到了提测的标准。
请点击这里下载《上线前Checklist》
//安全问题
设计安全的账号系统的正确姿势 - CoderZh Blog
http://blog.coderzh.com/2016/01/03/security-design/
防范方法
防范的方法简单来说数据从用户键盘敲出的那一刻,到服务器后台存储都要保持正确的姿势。比如:
用正确的姿势保存密码。
用正确的姿势传输数据。
用正确的姿势加密敏感信息。
用正确的姿势对数据进行备份和监控。
//用正确的姿势保存密码
- 低级错误:明文保存密码
- 低级错误:可逆加密密码
- 错误方法:md5 加密密码
- 正确方法:加盐 hash 保存密码
4. salt 的值不要和最终 hash 的结果存在同一个数据库。
15.app后端怎么设计用户登录方案 - 曾健生的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/44062849
- 保证登录的安全性,最起码要使用https协议
2.基本的用户登录方案
在传统的web网站中,可以使用cookie+session来实现用户的登录维护,那么在app后端,可以怎么实现呢?
16.app后端如何保证通讯安全--url签名 - 曾健生的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/44154791
- url签名详解
- url签名的不足之处
url签名有两个缺点:
1.当用户第一次登录后token是明文返回,有被截取的风险 - url签名只能保护token值却没法保护其他敏感数据,例如,当用户更新自己的个人信息时,所有的信息在传输过程中应该是被加密的
怎么解决这两个问题?使用下篇介绍的对称加密的算法
就可以了。
17.app后端如何保证通讯安全--aes对称加密 - 曾健生的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/44177063
1.对称加密的原理
- api请求中AES算法的应用
(2)怎么保证token在初次返回时的安全
注意:Token-Param
是自己定义的http header
,这里是因为个人习惯才命名为Token-Param
secretKey
就是密钥,使用http header中的Token-Param中的16位长度。
服务端返回时加密token的方法是用AES加密,密钥是secretKey。
客户端解密token
的方法是用AES
解密,密钥是secretKey。
--EOF--