1.1.安全控制1.1.1.功能定义安全控制是外部应用访问能力开放平台的安全控制机制的汇总,包括应用访问的认证、授权、鉴权、数据传输安全和访问隐私数据用户授权等。1.1.2.功能要点1.1.2.1.访问控制功能描述1.1.2.1.1.访问控制指许可应用访问能力开放平台的入口级安全控制操作。功能要求1.1.2.1.2.1、面向第三方应用访问,支持对存在攻击和入侵记录的非法IP地址进行黑名单绑定,拒绝继续访问能力开放平台;2、面向移动内部应用访问,支持对合法访问服务器IP地址可进行白名单绑定,允许名单范围内应用访问能力开放平台。流程示意图1.1.2.1.3.开发者APP校验IP是否在白名单中能力开放平台是校验IP是否在黑名单中否否提示不能访问是1、黑名单黑名单中的APP禁止访问能力开放平台。2、白名单白名单中的APP允许访问能力开放平台。类设计1.1.2.1.4.1.5.2.1.4.1类及类关系图-BlackWhiteListConfigManager()+getInstance():BlackWhiteListConfigManager-initBlackList():void-initWhilteList():void+refreshBlackList():void+refreshWhiteList():void+isBlackIP(inip:String):boolean+isWhiteIP(inip:String):boolean-blackList:Vector-whiteList:Vector-instance:BlackWhiteListConfigManagerBlackWhiteListConfigManager+execute():booleanRefreshBlackWhiteListJob1.1.2.2.接入认证功能描述1.1.2.2.1.接入认证指能力开放平台对应用的身份认证操作。前端应用管理模块负责应用注册时生成对应的应用ID、应用密钥,分发给第三方平台。应用ID是能力开放平台中对应用的唯一标识,平台通过应用ID来鉴别应用的身份。应用密钥是平台为应用分配的密钥。应用开发者需妥善保存平台分配的应用ID、应用密钥,作为能力调用时的认证参数。功能要求1.1.2.2.2.支持应用接入后的基于应用ID和应用密钥的身份认证。流程示意图1.1.2.2.3.第三方应用平台能力开放平台1、请求接入能力开放平台2、验证第三方应用能否接入3、返回接入认证结果类设计1.1.2.2.4.1.5.2.2.4.1类及类关系图+validateApp(inappID:String,inappSecret:String):boolean+checkAppPrivilege(inappID:String,ininterfaceCode:String):booleanCheckAppManager1.1.2.3.权限控制功能描述1.1.2.3.1.权限控制指应用访问能力开放平台时对应用的授权管理和鉴权处理。功能要求1.1.2.3.2.1、支持通过应用管理界面,对应用可访问的能力进行绑定维护管理;2、支持应用访问能力开放平台时对应用的实时鉴权处理。流程示意图1.1.2.3.3.第三方应用平台能力开放平台门户能力开放平台申请接入开放平台相关能力平台审核能力接入申请审核通过,第三方应用获得相关能力调用开放平台能力能力权限鉴权,校验第三方应用是否有权限调用该能力鉴权通过,执行能力操作返回能力鉴权结果(鉴权不通过)或能力调用结果(鉴权通过)类设计1.1.2.3.4.1.5.2.3.4.1类及类关系图+validateApp(inappID:String,inappSecret:String):boolean+checkAppPrivilege(inappID:String,ininterfaceCode:String):booleanCheckAppManager1.1.2.4.传输安全控制功能描述1.1.2.4.1.传输安全控制指对第三方平台和能力开放平台之间的数据进行加密传输和数字签名处理,防止业务数据被篡改和抗抵赖,保证业务数据操作可追溯。功能要求1.1.2.4.2.为保障交易请求的安全,防止请求信息被非法篡改,可采用数字指纹和RSA非对称加密方式或其他签名算法对交易过程进行安全保护。1.5.2.4.2.1请求消息的签名和验签1、第三方发起的业务请求,无论HTTPGET或HTTPPOST发起,其URL都有一个sign参数,在每个接口定义中,都将详细定义这个参数的生成方法,大致生成过程如下:sign=RSA(第三方私钥,MD5??????(待签名字符串1))2、开放平台接受到请求后的验签过程:1)按照接口规范获得“待签名字符串”,并生成字符串的MD5值:MD5_String=MD5(待签名字符串)2)使用第三方公钥解密请求报文的sign,获得第三方发送的原始MD5值:org_MD5_String=RSA(第三方公钥,sign),如果解密失败说明本请求信息可能是伪造;比较org_MD5_String和MD5_String,如果不相同表示请求信息被篡改,返回失败信息;1.5.2.4.2.2应答消息的签名和验签对于需要对应答信息进行安全保护的,将会在具体的接口中进行特别的描述。其安全过程参考7.6.2.4.2.1请求消息的签名和验签流程,其处理过程类似。流程示意图1.1.2.4.3.1该字符串的生成规则请参见各接口的描述;如果某个变量没有值,那么该变量的value对将不出现在请求的URL和加密明文中,请求URL中的value必须经过URLEncode(GBK编码),加密明文为value1value2...,其中value为未encode之前的原值,最后组合成的待加密明文应无空格。第三方应用平台能力开放平台1、先MD5加密待签名字符串,再用RSA密钥加密MD5串生成数字签名2、请求调用开放平台的能力接口3、接收到请求,按照1)按照接口规范获得“待签名字符串”,并生成字符串的MD5值:MD5_String=MD5(待签名字符串)4、使用第三方公钥解密请求报文的sign,获得第三方发送的原始MD5值:org_MD5_String=RSA(第三方公钥,sign)5、比较org_MD5_String和MD5_String6、返回数字签名校验结果类设计1.1.2.4.4.1.5.2.4.4.1类图及关系图+checkSign(insignParamMap:Map):MapCheckSignManager1.1.2.5.用户授权功能描述1.1.2.5.1.第三方应用的能力涉及访问用户隐私数据资源时,支持用户授权访问机制。授权应用场景1.1.2.5.2.在有服务端的应用(如web应用)下,授权流程对应着OAuth2.0协议中的标准AuthorizationCode授权模式(简称AC模式,见OAuth2.0协议标准),合作应用可通过调用开放平台授权接口和开放平台令牌接口,两步获得最终的API授权访问令牌。其流程简要描述如下:首先,应用通过调用开放平台授权接口,引导用户完成用户帐号认证登录,进而在获得用户授权的前提下,得到开放平台授权码(AuthorizationCode,简称AC)在应用获取到授权验证码后,即凭借所获的AC授权码,利用开放平台令牌接口,换取到最终的访问令牌(AccessToken,简称AT)。而在不具有服务器端场合(如手机/桌面客户端程序)下,开放平台授权流程对应着OAuth2.0协议中的标准ImplicitGrant授权模式(简称IG模式),由于不具备服务端支持,平台提供默认授权页面,因此在用户通过用户帐号的登录认证、并且获得了用户显式授权的前提下,应用可通过调用开放平台授权接口,一步获得最终的访问令牌。开放平台授权接口通过输入参数response_type的具体取值来区分其具体被应用于何种授权场合:当response_type取值为”code”时,其表示当前的调用场合为AC授权模式,天翼开放平台授权接口将返回AC授权码;当response_type取值为”token”时,其表示当前的调用场合为IG授权模式,开放平台授权接口将直接返回AT访问令牌。授权方式1.1.2.5.3.1.5.2.5.3.1AC授权1.5.2.5.3.1.1基本流程1、引导需要授权的用户重定向到如下地址=YOUR_CLIENT_ID&response_type=codc&redirect_uri=YOUR_REGISTERED_REDIRECT_URI注:YOUR_REGISTERED_REDIRECT_URI必须与开发者注册时填写的redirect_uri保持一致。2、如果用户同意授权,页面通过开放平台重定向至YOUR_REGISTERED_REDIRECT_URI?code=CODE。3、换取AccessToken使用POST传递参数:app_id=YOUR_CLIENT_ID&app_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE返回值:{access_token:SlAV32hkKG,expires_in:3600,refresh_token:SlAV12hkKG}4、使用获得的OAuth2.0AccessToken调用API。1.5.2.5.3.1.2流程示意图用户/浏览器应用服务器开放平台1、点击登录按钮2、请求用户授权code3、显示登录窗口4、输入用户名、密码登录5、显示授权窗口6、授权或拒绝授权7、返回用户授权code(authorizationcode)8、用code换取access_token9、返回access_token&refresh_token10、使用access_token来获取用户信息应用鉴权11、返回用户信息12、登录成功,页面显示用户信息浏览器/应用客户端用户鉴权1.5.2.5.3.2IG授权1.5.2.5.3.2.1基本流程1、引导需要授权的用户到如下地址=YOUR_CLIENT_ID&app_secret=YOUR_CLIENT_SECRET&response_type=token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI注:YOUR_REGISTERED_REDIRECT_URI必须与开发者注册时填写的redirect_uri保持一致。2、如果用户同意授权,页面跳转至YOUR_REGISTERED_REDIRECT_URI?access_token=ACCESS_TOKEN&expires_in=36003、获取页面上的AccessTokenImplicitGrant返回的令牌信息放在URL参数上,可以从地址栏的URL上获取令牌信息。4、客户端默认回调页通常MobileNativeApp没有服务器回调地址,您可以在应用控制台授权回调页处填写平台提供的默认回调页,该页面用户不可见,仅用于获取AccessToken。5、使用获得的OAuth2.0AccessToken调用API。1.5.2.5.3.2.2流程示意图用户浏览器/应用客户端开放平台1、点击登录按钮2、请求用户授权3、显示登录窗口4、输入用户名、密码登录5、显示授权窗口6、授权或拒绝授权7、返回access_token8、使用access_token来获取用户信息用户鉴权9、登录成功,页面显示用户信息应用鉴权授权及令牌接口1.1.2.5.4.见《附件六、中国移动能力开放平台能力开放与接入指南-征求意见稿V0.6》。类设计1.1.2.