AWS 移动开发参考指南

集成第三方原生应用

  1. 在AWS平台为第三方应用注册SSO服务
  2. 第三方原生应用进行SSO集成开发
  3. 将第三方原生应用添加到AWS平台

1. 在AWS平台为第三方应用注册SSO服务

进行此步骤前需先安装AWS应用SSO单点登录管理, 如不需要与第三方应用进行SSO集成, 可跳过此步骤

1.登录AWS控制台, 找到并打开「工具附加>SSO单点登录管理」。

addons

2.点击「新建」按钮进行SSO服务注册。

主要项 说明
可用状态 当处于暂停时,SSO API对该系统的服务暂不可用
限定人群 如果设置了用户范围,那么只允许范围内用户可访问,其他用户的令牌校验返回权限被拒绝
SSO URL 对于原生应用而言,此处可为任意值, 因这里注册SSO服务的主要目的在于获取access_key

3.点击「保存」按钮后,可获得调用该SSO验证的access_key。

Android集成开发

第三方应用在manifest.xml中注册隐式Intent,该Intent的action name需要与第三方应用的package name保持一致。 假设package name是com.actionsoft.entaddress, 则Intent应为:

    <activity
        android:name="com.actionsoft.entaddress.MainActivity"
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize">
        <intent-filter>
            <action android:name="com.actionsoft.entaddress" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

AWS移动门户调用该Intent打开三方应用, 并传递tokenId参数。

    Intent intent = new Intent("[三方应用 package name]");
    intent.putExtra("tokenId", "xxxxx");
    startActivity(intent);

第三方应用需要在Activity中获取tokenId, 并上传到服务器做验证。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String tokenId = getIntent().getStringExtra("tokenId");
        //TODO 将tokenId传递给第三方服务器进行验证
    }

iOS集成开发

在App中注册URL Schemes, 值与Bundle ID保持一致,假设Bundle ID是com.actionsoft.entaddress

AWS移动门户通过以下代码打开第三方应用, 并传递tokenId参数。

    NSString *url=[NSString stringWithFormat:@"[三方App Bundle ID]://sso?tokenId=%@", xxxx];
  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]

第三方应用可通过下面的代理方法获取tokenId, 并上传到服务器做验证。

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    NSLog(@"URL scheme:%@", [url scheme]);
    NSLog(@"URL query: %@", [url query]);
    //TODO  获取tokenId并上传到三方服务器做验证

}

2. 第三方原生应用进行SSO集成开发

第三方服务器获取到第三方应用传递来的tokenId后,需向AWS服务器发送请求进行验证。

服务请求地址

向AWS发送请求的URL地址,该服务在安装本应用后自动提供。

假设AWS服务的访问地址是:https://abc.awspaas.com ,地址示例如下

https://abc.awspaas.com/r/jd?cmd=com.actionsoft.apps.addons.sso_validate&tokenId=xxxx&access_key=xxxx

如果是开发者自己的本地开发环境,地址可能如下

http://localhost:8088/portal/r/jd?cmd=com.actionsoft.apps.addons.sso_validate&tokenId=xxxx&access_key=xxxx

服务请求参数

参数名 说明
cmd 此处为固定值com.actionsoft.apps.addons.sso_validate
tokenId 来自AWS提供给该URL的tokenId参数值
access_key 注册该SSO服务时提供的access_key值

请求处理结果

结果以json数据结构返回。假设要验证的tokenId为AAA,access_key为xxx-xxx,返回的数据结构如下

{
"data":{
"uid":"对应的AWS登录账户名",
"tokenId":"AAA",
"access_key":"xxx-xxx",
"validate":true
},
"msg":"",
"result":"ok"
}
  • 当data/validate值为true时,表示该令牌有效
  • 当result不为ok时,说明发生系统级错误,相关错误码请参考这里
  • 当令牌验证通过后,会在json结果中提供uid,即该令牌对应的AWS登录账户,开发者可根据该账户在该系统的权限,返回对应在该系统的业务数据
  • 如果Token提供的账户与第三方系统账户不一致,需要额外的实施和维护账户匹配规则(不在本应用标准功能之内)

更多SSO API规范请参考这里

3. 将第三方原生应用添加到AWS平台

1.登录AWS实例控制台, 在「移动应用管理>移动应用列表」 页面中,点击左上角 「添加」 按钮, 选择 iOS应用程序文件或者Android应用程序文件。

2.上传apk或者ipa文件

3.填写应用基本信息

项 说明
应用图标 3张png图标, 大小分别为16x16, 64x64, 96x96, 此时应已从应用程序文件中自动提取出图片
应用生成文件 上传的原生应用程序文件的名称, 此处为只读,不可修改。
应用名称 该应用显示给用户的名称,默认显示从应用中提取的应用名称,可修改。
PaaS应用ID AWS平台内部唯一的应用标识,默认随机生成,可修改。
实际应用ID 原生应用本身的标识,从应用程序中提取,不可修改。
版本号 应用版本号,从应用程序中提取,不可修改。
支持的设备类型 应用支持的设备类型,包含手机,平板和通用(手机、平板都支持)。iOS应用不可修改, Android可修改。
支持SSO 是否支持移动门户单点登录。如果进行了SSO集成, 则勾选此项。

4.填写应用扩展信息

基本信息

5.对应用进行授权

基本信息

至此,在移动应用列表中会出现该应用,被授权用户从移动门户中也可查看到该应用。



Seven
 010-62962343-690
 liujx@actionsoft.com.cn
感谢您对该文档的关注!如果您对当前页面内容有疑问或好的建议,请与我联系。如果您需要解答相关技术问题请登录AWS客户成功社区