`
ferreousbox
  • 浏览: 287186 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

阿里软件平台之个人剖析

阅读更多

    阿里软件平台作为一种新的SAAS架构在基于阿里平台和淘宝平台庞大用户的基础上在这一年的时间里得到了极大的关注,越来越多的软件开发者开发出自己的软件来服务于用户,体现了SAAS的价值。相信也有很多后来者想了解和熟悉这个平台并开发自己的应用,本人在阿里平台推出之初就开始关注,只是一直没有时间真正的来研究它,最近好好的研究了番,决定把自己的心得写出来给后来者或有经验者参考,理解或说错的地方还请大家见谅和指正(以下说明均是针对REST风格的请求而言,对于WEBSERVICE等其他方式则不在讨论之列)。

 

    首先得理解阿里平台里的几个概念:
SIP:service integration platform,即服务集成平台,作为中心处理各个服务请求,这里指的就是阿里软件平台;
ISV:independency software vendor,独立软件厂商,是提供最终给用户使用的软件的开发者;
ISP:internet service provider,互联网服务提供商,是提供开放API的厂商或开发者,如淘宝;

 

    整个平台运行由这三个部分参与,ISV对SIP发起服务请求,SIP经过一系列判断后将请求转发给ISP对应的服务,然后获取结果并返回给ISV,从而完成一次服务请求过程。SIP作为中心处理器负责维护ISV和ISP的相关信息,对于ISV就是软件的APPKEY和CERTCODE(相当于访问SIP的用户名和密码);对于ISP就是维护API的相关信息,如名称和请求URL的对应关系,授权信息等(个人揣测);SIP本身则负责基本校验(签名校验)、订购/购买、付费、授权/鉴权等操作。

 

    下面说说应用阿里平台中几个需要理解和注意的地方,有些是根据个人的经验进行的揣测。

 

一、免登陆


    免登陆主要是用来让终端用户通过阿里平台来免登陆到ISV的系统,仅此而已,没有其他用处。这样的好处就是用户在进入你的系统时不需要再次使用你提供的用户名和密码进行二次登陆了,简化了ISV系统的应用接入;从ISV的系统角度来讲,系统内部的东西是需要用户登陆后才能够进行的,相信很少或基本没有ISV的应用是可以直接进入的吧,而进入在WEB系统而言就是创建SESSION来识别用户,所以免登陆的用处还在于帮助ISV的系统进行用户的SESSION创建和授权操作。

 

我们来看下免登陆的操作流程:

 

1.终端用户登陆阿里平台,通过软件列表中的“进入使用”操作向阿里平台请求使用该ISV的软件;

 

2.SIP获取当前用户的ID、ISV软件的信息、用户订购的信息和自动生成的令牌TOKEN向ISV软件的入口发起登陆请求;

 

3.ISV软件获取对应的参数并马上回调SIP的免登陆接口进行确认,只有当SIP返回确认该请求是由SIP自身发起的,ISV的软件才应该认为该用户是正常的软件用户(包括订购者和使用者)。在确认成功后ISV的软件即可以为该用户创建SESSION并进行自己的业务授权了,从而完成用户对ISV软件的登录过程。

 

    通过这3个过程我们就可以避免非法用户对ISV软件的登录接口就行假登陆操作,因为在第3步中我们总是对SIP的网站发出请求进行验证,因而我们也总是相信该返回值的合法性,除非发生了域名劫持现象,呵呵。

 


二、开放API的调用


    阿里平台上的开放API有三种类型,apiType=1,只需要签名即可;apiType=2,需要签名同时需要终端用户对ISV软件进行人工授权操作;apiType=3,需要签名,用户授权可选,如果授权了可能从该API获取的数据信息就更多,否则只能够获取基本信息;

 

1.对于apiType=1的API调用


    对该类型的API调用就很方便了,只需要对请求参数进行签名后直接HTTP POST到SIP上去即可获得结果,终端用户在整个过程中无需干预,比如淘宝的商品搜索服务就是该类型的API。

 

2.对于apiType=2的API调用


    该类型的API调用需要终端用户手工授权,授权的意思就是当前终端用户允许当前这个应用可以调用该ISP中需要授权的开放API,其实也就是通过用户授权来绑定当前应用与ISP的API。授权首先需要终端用户登陆到ISP的系统中(比如淘宝ISP就需要终端用户使用淘宝的账号登陆淘宝系统)进行授权,授权和鉴权的过程由于隐藏在阿里平台的后端,我们无法得知,但根据相关的信息我揣测的过程如下(假设鉴权过程发生在SIP平台中):

 

    首先看下ISV和SIP的交互过程:


    1)ISV软件向SIP发起一个API调用请求;


    2)SIP检查该API并确认为apiType=2的情况下进行鉴权操作;


    3)如果请求的参数中没有携带sip_sessionid参数则返回1012错误,必须指定sip_sessionid


    4)根据sip_appkey和sip_sessionid在SIP平台中查找授权信息,没有找到或授权超时则返回1004错误,同时返回登录URL让ISV引导用户到该登陆地址进行登陆;如果鉴权成功则附带SIP和ISP之间的TOKEN后向ISP发起请求并获知结果返回给ISV;


    5)鉴权过程结束;

 

    然后看下在鉴权失败时SIP和ISP的交互过程,此时SIP已经返回1004错误给ISV了,ISV将引导用户进入给定的URL地址:


    1)ISV引导用户进入SIP返回的URL地址(错误1004返回的),此时的URL还是SIP的地址;


    2)SIP根据sip_apiname参数查找对应的ISP的登录验证地址并重定向到ISP的登录页面,同时传递根据sip_appkey和sip_sessionid等参数按照一定规则生成的TOKEN,并在SIP平台中保存这种对应关系;


    3)用户使用该ISP的账号进行登陆,比如淘宝作为一个ISP就需要用户使用淘宝账号进行登陆;


    4)登陆成功后,用户选择授权时间(1小时、30分钟、10分钟、5分钟等)提交;


    5)ISP将用户的授权时间、SIP在第2步中传递给ISP的TOKEN等信息传递给SIP的特定URL,这个过程中ISP只能够通过特定IP的服务器发起该请求才会被SIP受理(根据阿里平台的1019错误推测),否则将被SIP拒绝;


    6)SIP接到ISP的授权请求后,根据TOKEN将授权信息与sip_appkey、sip_sessionid进行绑定,从而完成授权过程;同时ISP将当前用户信息和SIP传递过来的sip_appkey、sip_sessionId也在自己的平台中进行绑定;

 

    整个鉴权/授权过程是一个连续的过程,授权需要用户的干预是为了保证信息的安全,我看到有人在论坛问为什么不能够通过API进行自动授权,如果这样其实就没有授权的必要了,我觉得这个设计非常好,恰如其分的联合了SIP、ISV、ISP和用户。另外,对于需要授权的API都需要传递sip_sessionid是为了绑定用户进行鉴权,让SIP知道当前来自ISV的请求是某一个特定用户的,同时也是为了让ISP根据sip_sessionid知道当前请求的是系统中的哪个用户,因为在上面的SIP和ISP的交互过程中的第6步中ISP已经绑定了用户信息和sip_appkey、sip_sessionId的对应关系,因此通过sip_appkey、sip_sessionId就可以唯一确定一个用户了。


    如果鉴权过程发生在ISP平台上的话,那么SIP就不需要绑定用户和授权信息了,而是通过ISP注册时的鉴权URL进行鉴权操作,当然这过程中为了保证数据的安全性也会进行加密/签名等步骤。基本过程估计都差不多,不过本人更倾向于前面的方案。

 

    授权完成后(也可称为用户和SIP的绑定),在授权的时间里ISV发起对该ISP的API调用就不需要再进行授权操作了,从而也就是完成了用户对ISP的登录。以上过程是根据个人经验推测得到,如果不对还请大家指正。

 

 

三、ISV系统的权限分级


    对于ISV开发的系统如果功能很多,终端用户也有可能有权限划分的需求,因为用户在订购了ISV的软件后,他还可以设置使用该订购实例的用户,即一个订购实例可以被多个人同时使用,因此提供权限分级管理对于大型软件也是有必要的。进行权限设计要考虑到以下问题:

 

1.如何获取所有订购了该软件的用户;


  对于这个问题可以有2种解决方案:


  1)每个ISV的软件都有一个通知URL设置,这个是用户在软件超市中订购了软件后,阿里平台回调ISV系统的一个接口。该接口向通知URL传递用户的ID、软件实例的ID等信息。通过阿里平台的介绍,我们可以把实例ID(appInstanceId)当成一个组织或公司,拥有同样appInstanceId的用户都是同一个软件实例的使用者。在这里平台中将软件的用户分成2种类型,一是软件的订购者,可以认为是管理员;再一个就是软件的使用者,是由订购者邀请一起使用软件的其他用户,可以认为是一般用户。


  2)再一种方式就是用户在进行免登陆时通过alisoft.getUsingUse接口来获取当前用户所代表的实例的所有用户,然后存入ISV自己的数据库中。该接口只返回了用户ID和用户名称,然后我们可以通过alisoft.validateAppUser接口来获知用户在这个实例中代表的类型,可以查到谁是软件的订购者,谁是使用者。这种方式可以用来通知URL中处理异常时的有效补充。

 

2.如何区分用户所属的公司或组织;


    在1中已经介绍了,每一个appInstanceId都可以认为是一个组织或公司,而该实例的订购者则是该组织或公司的管理员,其他的则是普通的用户。

 

    解决了以上的问题后,我们权限系统的用户和组织、组织的管理员和一般用户等基本信息就都有了,然后在系统内部就是管理员按照权限来划分功能菜单给指定的用户了,这就是一般权限系统的设计过程了,就不多说了。


    以上几点是针对开发者需要注意的几点问题对阿里平台的一点剖析,希望对大家更深入的理解这个平台起到帮助作用,希望和大家一起交流:biqiang.ma@gmail.com

 

1
0
分享到:
评论

相关推荐

    阿里软件互联平台官网需求(第一期).pdf

    ### 阿里软件互联平台官网需求分析 #### 一、官方需求 ##### 1.1 商旅服务 **背景与需求概述** 阿里旺旺作为阿里巴巴集团旗下的即时通讯工具,在其用户群体中发现了一项共通的需求——商旅服务。为了更好地服务...

    2020-2021最新的淘宝客阿里妈妈开放平台SDK-nodejs

    综上所述,"2020-2021最新的淘宝客阿里妈妈开放平台SDK-nodejs"是一个专门针对Node.js开发者的工具,它提供了一系列接口和服务,用于淘宝客的推广工作,包括商品查询、订单跟踪、推广管理和数据分析。通过这个SDK,...

    阿里妈妈批量创建推广位PID的软件,可以创建几万个PID

    阿里妈妈批量创建推广位PID的软件是一款专门针对阿里妈妈平台设计的工具,旨在帮助用户高效地生成大量PID(Promotion ID),以便于进行大规模的网络营销和推广活动。PID是阿里妈妈联盟营销中的一种标识符,它连接了...

    抓图软件(淘宝天猫阿里).zip

    本篇将详细讲解"抓图软件(淘宝天猫阿里)"的相关知识点,以及如何利用这类工具在淘宝、天猫、阿里巴巴等电商平台进行图片抓取。 首先,我们需要理解“抓图”这一概念。抓图,也被称为截图或屏幕抓取,是指在电脑...

    基于SWOT方法对云计算在电子商务的应用分析—以阿里淘宝平台为例.pdf

    例如,阿里淘宝平台作为中国乃至全球领先的电子商务平台之一,其庞大的用户量和数据量对计算能力和数据处理提出了极高的要求。通过云计算,淘宝能够实现快速的数据处理和高效的服务部署,同时保证了在大规模并发访问...

    关于阿里钉钉软件使用分析.docx

    阿里钉钉是一款由阿里巴巴集团开发的企业级通讯与协作平台,旨在提升中国企业的工作效率。自2014年启动以来,经过多次迭代更新,它已经发展成为一个功能丰富的软件,覆盖了即时通讯、企业组织管理、会议系统、审批...

    阿里云产品图标大全.zip

    阿里云是阿里巴巴集团旗下的云计算服务平台,它提供了多种云服务,包括但不限于计算、存储、数据库、大数据分析、人工智能、物联网(IoT)等。这些服务帮助企业、开发者和个人快速构建、部署和管理应用程序,同时降低...

    网站推广:类似阿里妈妈

    网站推广是互联网行业中至关重要的一个环节,其目的是通过各种手段增加网站的知名度、访问量以及潜在用户群体...了解并掌握这些类似阿里妈妈的网站推广方法,有助于任何企业和个人在网络世界中脱颖而出,实现商业目标。

    阿里巴巴电子商务案例分析.ppt

    阿里巴巴集团拥有多个子公司,如淘宝网、支付宝、阿里软件、阿里云等,覆盖了从B2B到C2C的多种电子商务领域。淘宝网是其C2C平台,支付宝是在线支付工具,阿里云提供云计算服务,而淘宝商城则聚焦于B2C市场。 阿里...

    基于阿里云服务器环境的个人知识管理信息系统设计实现.pdf

    阿里云作为一种云服务平台,提供了搭建和维护个人数据所需的资源和服务。它的应用有助于个人用户快速搭建高度定制化的信息管理系统,从而提升新技术在个人知识管理中的普及和应用。 3. 知识信息的特性及管理需求 在...

    商业生态系统理论的应用_基于阿里巴巴的分析.pdf

    1. 最初设想:马云提出通过阿里巴巴和淘宝网实现个人与企业的电子商务全覆盖,支付宝作为网络诚信的基础,阿里软件和阿里妈妈辅助中小企业的管理和营销。通过一系列的业务布局,阿里巴巴形成了一个庞大的电子商务...

    阿里云产品实践&企业上云案例.pdf

    文档中提到了阿里云的核心产品之一飞天(ApsaraStack),这是一个全面的云计算平台,提供弹性计算、存储服务、数据处理、数据库服务、安全服务、数据分析等核心功能。飞天平台为不同行业的解决方案提供了基础,包括...

    阿里旺旺2012文件提取

    "阿里旺旺2012文件提取"指的是将阿里旺旺2012软件中的特定文件或数据进行导出或备份,以便于在不同设备上使用或者进行分析。 在解压并使用阿里旺旺2012的过程中,我们需要注意以下几个关键知识点: 1. **文件格式...

    阿里巴巴做电脑去了?

    根据给定的信息,我们可以推断出文章主要讨论的是关于阿里巴巴是否涉足个人电脑制造领域的消息。以下是对该主题的详细分析: ### 阿里巴巴进军电脑领域? #### 标题解读: - **“阿里巴巴做电脑去了?”** 这个标题...

    阿里巴巴2011校园招聘大礼包

    阿里巴巴的主要竞争对手包括京东、拼多多等电商平台以及腾讯、百度等互联网巨头。 **1.6 阿里巴巴集团工作地点** 阿里巴巴集团的工作地点遍布中国多个城市,主要包括杭州、北京、上海等地。 #### 二、阿里巴巴...

    阿里云企业电子书合集.zip

    1. **云计算基础**:电子书中可能会详细介绍云计算的基本概念,包括公有云、私有云和混合云的区别,以及IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务)的定义和应用。 2. **阿里云服务**:阿里云...

    博踩天下(阿里版) 1.1

    结合以上分析,我们可以推测博踩天下(阿里版) 1.1可能是一个为企业或个人设计的工具,用于优化在阿里巴巴平台上的运营,包括但不限于数据分析、客户关系管理、内容发布和社交媒体互动。通过http.exe实现与阿里巴巴...

    AliTech《阿里公开技术文档整合》

    最后,《Codelife》可能是关于软件工程师的职业发展、个人成长或行业趋势的综合指导。它可能包含技术人的职业生涯规划、技能提升路径、团队建设经验、行业动态分析等内容,旨在帮助IT从业者不仅提升专业技能,还能...

    阿里巴巴发展与竞争的战略分析.doc

    2003年,推出了个人交易平台淘宝网,并在同年创建支付宝,进入电子商务支付领域。2005年,阿里巴巴收购雅虎中国,进一步拓展搜索业务。之后,阿里软件成立,进入管理软件市场,阿里妈妈则助力其在网络广告领域取得...

Global site tag (gtag.js) - Google Analytics