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数据结构返回。假设要验证的tokenIdAAAaccess_keyxxx-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客户成功社区