在所有的开放平台中,安全的问题都是平台和开发者要一起面对的一个难题,尤其是对于淘宝开放平台(TaoBao Open Platform,简称TOP)这样一个电子商务的开放平台来说,保护用户的隐私数据安全和平台本身的安全显得更为重要。同时考虑到平台的开放性,以及淘宝网这种上亿级别的访问量,这就给TOP 的安全机制带来了更大的挑战。

TOP 机制主要包含两个方面,一是业务的安全,包括认证、授权等;二是系统的安全,包含流量控制、系统监控等,这里主要讨论的是前者,业务的安全,也就是对于应用的认证和授权。

要让第三方开发的应用,通过 TOP 来获取用户的数据,必须经过用户和 TOP 的双重授权。在传统的平台中,如果第三方应用需要获取用户的相关数据,需要向第三方应用提供自己的用户名和 PIN 码,如下图:

例如,在不少的 SNS 网站上,如果要获取用户的 MSN 好友信息,需要用户把自己的用户名和 PIN 码提交给这些 SNS 网站,SNS 网站作为用户的代理,向 MSN 服务端发送请求来获取用户的好友信息。虽然这些 SNS 网站一再声称不会保存用户的 PIN 码,但这种方式,天然是有着安全缺陷的。

而在各大互联网公司推出的开放平台中,上面的三角关系变成了下面这种:

用户首先在平台进行登录认证,认证通过之后,平台会颁发给用户一个 Token,用户将这个 Token 授权给第三方应用之后,第三方应用就可以使用这个 Token 来向平台获取用户的相关数据了。目前 OAuth、Facebook Connect、Flickr Auth,包括 TOP 也都是使用的这种方式。

在 TOP 中,一个第三方应用如果要获取用户数据,是需要两方面的授权的:

  • 来自 TOP 的授权 在开发者向 TOP 申请开发一个应用的时候,TOP 会对开发者的资质进行审查,应用要申请的权限越高,对与开发者的资质要求就越高。在 TOP 中,每个应用(Application)都会对应一个或多个角色。例如对于交易类的 API,TOP 分为买家应用、卖家应用、商家应用、高级应用、专业应用等角色,普通的开发者能够比较容易的申请到买家应用和卖家应用的角色,这两种角色已经能够满足绝大多数的需要,而对于商家应用、高级应用、专业应用,则需要相对比较高的资质要求。

    如果开发者声明应用只是自己使用的,就比较容易申请到比较高的权限,这样,开发者申请到的 Application 就只能通过 API 访问开发者自己的隐私数据,是无法获取其他人的隐私数据的。

  • 来自用户的授权 在 TOP 开放的 OpenAPI 中,API 分为三类:一是公开查询类的 API,例如查询淘宝类目信息,这些 API 是不需要用户授权即可调用的;二是隐私类 API,例如上传商品,这些 API 必须要获得用户的授权才可以调用;还有一类 API,既包含用户隐私信息,又包含用户公开信息,例如查询用户信息这个 API,如果只是获取用户的公开信息字段,包括 nick、注册时间等,就不需要用户授权,而一旦要查询用户的隐私信息字段,如收货地址等,就必须获得用户的授权。

    用户授权的过程就如前面所讲的,用户从 TOP 获取到 Token,然后将 Token 授予第三方应用,应用使用这个 Token 就能够调用隐私类的 API 了。这个 Token 绑定了两个方面的信息,一是用户,即使用这个 Token 只能访问被绑定用户的隐私信息,不能访问其他用户的隐私信息;二是应用,即这个 Token 只能被绑定的应用所使用,不能被其他的应用使用。这样就能保证只有真正被用户授权的应用,才能访问这个用户的隐私信息。

    当然,这个 Token 是有有效期的,Token 的有效期也分为这样几类:

    1)根据访问进行延迟的 Token,类似于 Session,每次应用使用这个 Token 访问一次 OpenAPI,TOP 就会将这个 Token 的有效期延迟一个固定的时间;

    2)固定时限的 Token,由用户指定一个固定的过期时间,这个 Token 只能在这个有效的期限内使用;
    3)一次性的 Token,使用一次即失效的 Token,即授权一次,就只能使用一次;
    4)通知失效 Token,授权之后就能一直使用的 Token,直到用户通知这个 Token 失效。

对于如何获得用户的 Token,一直是开发者关注的焦点。在 TOP 中,提供了两种获取用户 Token 的方式:

  • URL 回调方式,对于 Web 类的应用,TOP 会要求开发者提供一个回调 URL。用户在 TOP 发起访问指定第三方应用的请求,TOP 验证用户是否已经登录,如果已经登录,则会给出一个提示性页面,告诉用户要访问的应用信息,以及可能的风险,如果用户确认继续访问,TOP 会通过这个回调 URL 将当前的上下文信息,以及用户的 Token 传递给应用,当然,传递给应用的信息中还包含一个 TOP 的签名信息,对于开发者,也有保护用户隐私信息的义务,所以开发者需要对这个签名信息进行验证,否则应用是不能通过 TOP 的上线审核的。
  • 授权码方式,对于这种方式,存在比较多的争议,其原因是需要用户手工复制粘贴一个授权码到应用中。但是对于桌面端应用,这种方式则显得非常必要,因为用户要使用的是桌面端应用,但是唯一能够信任的淘宝登录方式,是一个网页,只能在浏览器窗口中打开,所以必须要用户从浏览器窗口获取到授权码,然后粘贴到桌面端应用中,应用得到这个授权码之后,会向 TOP 请求当前的上下文以及用户的 Token 和 TOP 的签名,这些参数的格式,和前面 URL 回调方式获得的参数的格式是一致的。

应用获取到 Token 之后,就能够通过 OpenAPI 获取相关的数据了。而在整个过程中,用户并没有把自己的口令暴露给第三方的应用,应用就能获取到用户的授权访问用户隐私数据。是不是皆大欢喜呢?

当然不是,对于某些关键操作,例如交易付款,TOP 并没有提供相应的 API,而是提供了交易付款页面,将这种页面以服务的形式提供给第三方来使用,对于这类的服务,安全性要求更高,TOP 是怎么解决的呢?且听下回分解。

淘宝开放平台的认证授权机制相关推荐

  1. 历经8年双11流量洗礼,淘宝开放平台如何攻克技术难关?--转

    原文地址:http://chuansong.me/n/1588392851627 作者|风胜来源|阿里技术 淘宝开放平台(open.taobao.com)是阿里系统与外部系统通讯的最重要平台,每天承载 ...

  2. 记一次淘宝开放平台开通电商软件服务商ISV

    收到需求,需要获取淘宝卖家交易记录,文档地址https://open.taobao.com/api.htm?docId=46&docType=2#commponParams 接口为taobao ...

  3. 淘宝开放平台回顾与前景展望

    2019独角兽企业重金招聘Python工程师标准>>> 引语:云计算一出,很多人风风火火的讲PaaS,然而真刀实枪干过,而且能无保留的.站在架构师的角度讲些技术的不多,本文是淘宝架构 ...

  4. 创建淘宝开放平台应用的步骤简单记录

    转载原文地址:http://blog.csdn.net/kkdelta/article/details/19543995/ ====================================== ...

  5. 历经8年双11流量洗礼,淘宝开放平台如何攻克技术难关?

    淘宝开放平台(open.taobao.com)是阿里系统与外部系统通讯的最重要平台,每天承载百亿级的API调用,百亿级的消息推送,十亿级的数据同步,经历了8年双11成倍流量增长的洗礼.本文将为您揭开淘 ...

  6. 淘宝开放平台技术历程----学习转载

    2019独角兽企业重金招聘Python工程师标准>>> Author:放翁 Date:2012/10/13 注:文中所有的技术点都可以在http://blog.csdn.net/ce ...

  7. 淘宝订单接口|订单插旗备注,淘宝开放平台最稳定的店铺订单接口

    使用淘宝订单接口,可以对订单数据进行同步.同步后,可以做订单金额.订单状态等信息的同步. 服务器集群,R2资质. 在官方基础上接口做了二次封装,完善的API文档,一般团队1天内即可完成从开发接入的完整 ...

  8. 淘宝开放平台订单接口

    custom-自定义API操作 注册开通 onebound.taobao.custom 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) sec ...

  9. 关于淘宝API的详细说明(淘宝开放平台API揭秘)

    自淘宝开放平台Beta公测开始,陆续开放了上百次个API,这些API涵盖了淘宝基本业务,截止发日志当天开放平台API每天的调用量可是说是天文数字. 作为TOP开发者的您对 于淘宝平台-API可以信手拿 ...

最新文章

  1. scrapy 第一个案例(爬取腾讯招聘职位信息)
  2. java第七章jdbc课后简答题_javaEE简答题答案
  3. java 多个timer_java – Timer正在创建多个计时器实例
  4. ibm服务器安装系统后黑屏,i52430m装win10系统重启电脑进入会黑屏修复方法
  5. 车座自动排水阀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. 一些控制鼠标的例子!
  7. DateUtils封装
  8. python 打印数组_python打印数组的全部元素 | 学步园
  9. 基于SSH的在线问卷调查系统的设计与实现
  10. java mail 群发邮件_javamail群发邮件
  11. 状态机工作流.实列.报销审批流程(二)
  12. SAP 各种记账凭证的更改冲销
  13. wordpress目录不分层级方法!去掉WordPress目录链接中category?目录在根目录
  14. mysql按照首字母排序
  15. HR-Saas(二):登录模块
  16. TokenGazer评级丨TRON:BTT众筹谋求熊市破局,生态繁荣但数据受到质疑
  17. python普通常量_以下属于Python普通常量的是(
  18. 【软考系统架构设计师】2011年下系统架构师综合知识历年真题
  19. SEO网站优化之长尾关键词的站内布局
  20. XCUIApplication API

热门文章

  1. hackthebox-01startpoint-TIER2-Oopsie
  2. R matrix函数详解
  3. 一物一码溯源防伪开源演示系统
  4. Angular 项目的搭建步骤
  5. HDU 4526.威威猫系列故事——拼车记
  6. QT学习之TableWidget 表格控件使用
  7. 微信小程序-获得当前时和当前时间截
  8. android微信分享走小程序流程,教你怎么把微信小程序分享到朋友圈
  9. 逻辑回归_极大似然估计
  10. Python 二维离散傅里叶变换