背景
随着互联网的深入发展,互联网巨头逐渐积累了海量的用户和数据。对于平台级应用而言,用户需求多种多样,变化万千,独立应付不免分身乏术。因此,将数据以接口的形式下放给众多的第三方开发者,第三方开发者经过二次开发,满足用户的独特需求。同时,平台型应用吸引了第三方开发者和用户,在大平台周围形成了一个良好的生态环境。
OAuth
OAuth介绍
OAuth协议旨在为用户资源的授权访问提供一个安全,开放的标准。平台商通过OAuth协议,提示用户对第三方软件厂商(ISV)进行授权,使得第三方软件厂商能够使用平台商的部分数据,对外提供服务。
与以往的授权方式不同,OAuth协议并不需要触及用户的账户信息(用户名和密码),通过不同类型的token,便可以让平台商完成针对第三方应用的用户信息访问授权。
正是由于OAuth协议平衡了ISV,平台商,用户三者间的诉求,很多大型互联网企业,如Google,Facebook,Microsoft等,都通过OAuth协议对外开放了其所拥有的海量数据,繁荣了整个互联网生态圈。也使得OAuth协议正逐渐成为开放资源授权的标准协议。
OAuth授权过程
OAuth的最新版本是OAuth2.0.核心思想是将资源做权限分级和隔离。ISV引导用户在平台端登录,完成授权,获得授权后ISV可以在一定时间段内访问用户的私有数据。整个过程中用户可以取消授权。
要获得OAuth协议授权,首先需要第三方开发者向平台商申请应用ID,即appId,对自己的APP进行注册。之后整个OAuth授权过程涵盖了三个角色:普通用户(consumer),第三方应用(ISV),平台商(platform)。包含了如下几个步骤:
1.用户对ISV应用进行访问,发起请求
2.ISV应用收到请求后,使用appId向平台请求request token
3.平台返回request token给ISV应用
4.ISV应用重定向到平台授权页面(页面url包括requesttoken,ISV回调链接和appId),引导用户登录
5.用户在平台授权页面进行登录,并且完成授权
6.平台通过ISV提供的回调链接,返回accesstoken给ISV应用
7.ISV应用通过access token取得用户授权的数据,返回给用户
通常情况下,OAuth协议在进行协议授权和数据传输时,包含的都是敏感度较高的内容。为了确保通信安全,一般会使用摘要认证,签名认证和Https等技术。
OAuth授权是一个相对复杂的过程,整体架构涵盖了系统设计的方方面面。不仅包括认证过程,还要解决开发者入驻,权限粒度控制,token生成和校验,分布式session,公私钥管理等问题。
随着开源社区的发展,一大批开源的OAuth库如雨后春笋版涌现。详情可以参考: