APP登录设计

对登录逻辑做一些总结。
在APP中登录有两种:
APP内部登录,以及第三方登录。
一般APP内部登录,采用token代替网站的cookies。做法是用户先用账户名/密码取得token,然后做后续访问时携带token,当token过期后再次请求。
第三方登录,为了提高安全性,一般采用OAuth2.0。即在第三方平台注册app的clientid,设置回调界面,然后在本地APP调用第三方平台相关API。得到授权后将token存放到本地,携带此token访问第三方平台相关资源。过期则重新请求~具体流程见下图:
APP登录设计_第1张图片

OAuth2.0的安全性解读:
http://drops.wooyun.org/papers/598

OAuth 2 一般不适用公司内部 API 调用,因为它的主要目的是解决资源授权的问题,而且 OAuth 2 里面角色对于 C/S 结构的 app 来说太过于繁杂了,不太有必要折腾。
移动 app 比较简单的方法还是使用 token(一种类似与 http cookie 的东西),登录之后得到 token,任何请求都必须带上它。因为是内部账户体系,登录也可以直接使用用户名密码,验证成功服务器就返回 token,没有必要做各种 code/token 交换的事情。
不过如果公司资源变得非常独立和分离了,OAuth 2 还是很有价值的。在我的公司,为了让公司内部统一用户名密码,我就实现了一个基本的 OAuth 2 流程,负责给各种内网网站授权,确实比较方便。

OAuth授权大致分为以下三步:
客户端向平台申请一个 request token,该 token 是未授权的;
客户端打开平台提供的登陆页面,引导用户输入用户名密码,对 request token 进行授权。 登陆页面的 url 中会附带一个 redirect_url,当授权成功后会重定向到这个地址,返回客户端。
客户端拿着已授权的 request token 向平台换取一个 access token,后续就使用 access token 访问平台提供资源。
第二部又可以有三种方法:webview,safari,第三方app,参考http://blog.csdn.net/qijianli/article/details/8025776

你可能感兴趣的:(模块设计思路)