全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件

滑动验证Android/iOS使用说明

更新时间:2017-06-07 13:26:11

滑动验证,通过生物特征判定操作计算机的是人还是机器,从而取代传统验证方式。Android、iOS端滑动验证组件展现形式:
Android/iOS:
app

系统间交互流程

app端流程
1.启动滑动验证:用户APP调用风控SDK启动风险验证。用户在页面操作滑动验证:

  • 正常用户:滑动直接通过;
  • 有风险用户:滑动后失败,直接返回初始页面,提示重新滑动;

2.提交业务请求:用户提交业务请求如注册、登陆请求时,需要将验证码参数传递给服务端,验证码参数包含:

  • session_id:验证会话id

3.校验验证结果:用户服务端调用验证码服务api,获得校验结果。该步骤需要放在业务请求处理之前。
4.校验结果处理:根据返回的校验结果,进行处理。对于不同校验结果,建议处理方案:

  • 校验成功:继续做业务请求处理,如注册、登陆处理;
  • 校验失败:建议直接返回业务请求失败,让操作者重新再来一次。

接入流程

1.第一步,进入数据风控控制台:

  • 未开通服务,开通服务;
  • 已开通服务,进入服务管理,选择滑动验证服务,点击【创建】:验证码创建1

2.第二步,选择应用类型(Android、iOS)、使用场景、输入高峰期PV,点击【下一步】:验证码创建2

3.第三步,根据系统集成代码的操作步骤,下载SDK,集成到APP中;服务端调用对应api,详细操作参见下方:系统集成。集成完成,点击【下一步】:sdk

4.第四步,系统集成完毕,发布对应的服务:验证码创建4

系统集成

Android SDK集成配置

1.生成SDK
出于对应用数据安全考虑,数据风控生成的SDK会与应用强绑定。如果此前使用Debug版应用 生成SDK需要在应用发布前使用Release版应用重新上传,并替换原有SDK。

  • 上传Release版APK;
  • 点击“生成SDK”按钮,生成SDK;
  • 生成完SDK后,SDK自动下载到本地;

2.导入SDK
2.1 导入前准备
数据风控SDK在阿里巴巴的很多开放的SDK中也有包含,如果你的APK中同时引入了这些SDK,则在集成聚安全SDK之前需要将这些SDK(TAE,支付宝等)中包含的安全组件(.jar、.aar文件)、图片文件(YW_1222.JPG)全部删除掉。
2.2 导入SDK
根据使用方式导入SDK,AndroidStudio使用aar方式导入,Eclipse使用jar和so方式导入;

  • 导入aar,如图把所有的aar都复制到项目的libs目录下,然后在该Module的build.gradle中增加如图配置:Android1
    1. dependencies {
    2. compile fileTree(dir: 'libs', include: ['*.jar'])
    3. testCompile 'junit:junit:4.12'
    4. compile 'com.android.support:appcompat-v7:23.+'
    5. compile name: 'NoCaptchaSDK-external-release-5.1.17', ext: 'aar'
    6. compile name: 'SecurityBodySDK-external-release-5.1.25', ext: 'aar'
    7. compile name: 'SecurityGuardSDK-external-release-5.1.81', ext: 'aar'
    8. compile name: 'verificationsdklib', ext: 'aar'
    9. }
  • 导入jar包和so,如图把SDK中的所有的jar包和so文件都复制到工程的libs目录下:Android2
    注意:
    a.目前只提供两种架构下的so文件,armeabi是针对arm架构编译的包,x86是针对x86架构编译的包。应用程序在不同cpu架构的机型里会选择相应的so文件加载。
    b.如果libs下有armeabi-v7a文件夹的话,需要将armeabi中对应的so复制一份到armeabi-v7a文件夹下。
    c.如果libs下有arm64-v8a或x86_64文件夹的话,需要将arm64-v8a文件夹删除掉。
    d.如果在想在x86或者模拟器上运行你的程序,必须导入x86架构的so,但是可以在应用发布时去掉x86目录下的so。
    e.最后目录显示如下:
    1. NoCaptchaSDK-5.1.16.jar
    2. armeabi
    3. SecurityBodySDK-5.1.19.jar
    4. verificationsdklib.aar
    5. SecurityGuardSDK-5.1.58.jar
    6. x86

3.导入图片
3.1 解压第1点中生成的SDK,获得文件:yw1222.jpg;
3.2 把这个文件导入到工程中res\drawable\目录下,如果没有这个文件夹,请先创建,如下图:
android3
左图为AndroidStudio中安全加密图片位置,右图为Eclipse中安全加密图片位置;
3.3 如果开启混淆要检查发布包335大小不为0, shrinkResources true会导致yw_1222_0335以及yw_1222图片为0

  1. release {
  2. minifyEnabled true // 是否混淆
  3. shrinkResources true // <<<会导致335或者122图片为0
  4. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  5. }

解决方案一
放弃资源压缩
解决方案二
参考google 关于shrink resource
新建 res/raw/keep.xml后加入如下内容:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources xmlns:tools="http://schemas.android.com/tools"
  3. tools:keep="@drawable/yw_1222_0335, @drawable/yw_1222"/>
  • 保留文件规则简单介绍,资源文件相对路径加上图片文件名(不需要扩展名);
  • 执行 ./gradlew clean assembleRelease –info|grep “Skipped unused resource” 观察是否安全图片给压缩,同时检查解压缩后文件是否为0。

4.android studio修改项目文件
4.1 修改应用的工程根目录build.gradle文件:

  1. allprojects {
  2. repositories {
  3. jcenter()
  4. flatDir { //<------添加三行
  5. dirs 'libs' //<------
  6. } //<------
  7. }
  8. }

4.2 修改application子工程的build.gradle文件

  1. dependencies {
  2. compile fileTree(include: ['*.jar'], dir: 'libs')
  3. compile(name:'verificationsdklib', ext:'aar')
  4. }

4.3 修改application子工程的build.gradle文件,增加jnilib

  1. sourceSets {
  2. main {
  3. jniLibs.srcDirs = ['libs']
  4. }
  5. }

4.4 AndroidManifest.xml 加入验证SDK入口Activity声明

  1. <activity android:name="com.alibaba.verificationsdk.ui.VerifyActivity"
  2. android:screenOrientation="portrait"
  3. android:theme="@android:style/Theme.NoTitleBar"
  4. android:windowSoftInputMode="adjustResize" >
  5. </activity>

5.Eclispe修改项目文件5.1 添加权限信息

  • 如果是AndroidStudio项目,则不需要在项目中额外配置权限,因为在aar中我们自己已经声明了权限;
  • 如果是Eclipse项目,需要在AndroidManifest.xml文件中添加下列权限配置:
    1. <uses-permission android:name="android.permission.INTERNET" />
    2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    3. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    5. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    6. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    7. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    8. <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    9. <uses-permission android:name="android.permission.BLUETOOTH" />
    10. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    5.2 AndroidManifest.xml 加入验证SDK入口Activity声明
    1. <activity android:name="com.alibaba.verificationsdk.ui.VerifyActivity"
    2. android:screenOrientation="portrait"
    3. android:theme="@android:style/Theme.NoTitleBar"
    4. android:windowSoftInputMode="adjustResize" >
    5. </activity>

6.关于混淆

如果设置资源压缩 shrinkResources true,参考导入图片的处理,防止安全图片被压缩为0字节,配置proguard-rules.pro:

  1. -keep class com.taobao.securityjni.**{*;}
  2. -keep class com.taobao.wireless.security.**{*;}
  3. -keep class com.ut.secbody.**{*;}
  4. -keep class com.taobao.dp.**{*;}
  5. -keep class com.alibaba.wireless.security.**{*;}
  6. -keep class com.alibaba.verificationsdk.**{*;}
  7. -keep interface com.alibaba.verificationsdk.ui.IActivityCallback

7.SDK API
7.1 SDK初始化:

  • 初始化负责完成整个数据风控安全组件的全局初始化。初始化是线程安全的,初始化调用只需要进行一次,无需重复调用;
  • 查看接口详情

7.2 启动风险验证

  • 使用场景:在需要使用验证码的场景,如注册、登陆、活动页面,可以直接启动验证码进行验证;
  • 查看接口详情

iOS SDK集成配置

1.生成SDK
出于对应用数据安全考虑,数据风控生成的SDK会与应用强绑定。如果此前使用Debug版应用 生成SDK需要在应用发布前使用Release版应用重新上传,并替换原有SDK。

  • 上传Release版ipa;
  • 点击“生成SDK”按钮,生成SDK;
  • 生成完SDK后,SDK自动下载到本地;

2.导入SDK
2.1 导入Framework
a. 把SDK中的framework文件添加到项目目录中

  1. MSAuthSDK.framework SecurityGuardSDK.framework SGMain.framework``SGNoCaptcha.framework``SGSecurityBody.framework

b. 将MSADefaultImages.bundle和MSADefaultLocale.bundle加入资源中
c. 如果sdk中带有xib,需要将所有xib加入资源中
2.2 导入图片
a. 解压第1点中生成的SDK,获得文件:yw1222 *.jpg;
b. 把这个文件导入到项目目录下,如下图:
ios1
2.3 依赖 CocoaPods:
不使用pod可以直接使用sdk内压缩包:

  1. pod 'SVProgressHUD', '~> 1.1'
  2. pod 'SSZipArchive', '~> 1.1'

2.4 添加系统依赖库
在项目中添加其他依赖的framework,如下图:ios2
2.5 其他项目配置

  • 在Build Setting中的Other Linker Flags中添加“-ObjC”选项,如下图:ios3
  • 在info.plist中设置,开放http请求:
    1. <key>NSAppTransportSecurity</key>
    2. <dict>
    3. <key>NSAllowsArbitraryLoads</key><true/>
    4. </dict>
    3.SDK API
    3.1 启动风险验证
  • 使用场景:在需要使用验证码的场景,如注册、登陆、活动页面,可以直接启动验证码进行验证;
  • 查看接口详情

服务端API调用

  1. 下载对应语言的SDK,SDK下载请进入数据风控控制台
  2. 将SDK加载到工程中;
  3. 参考下方的代码,开发第一步页面请求的处理类(如java的Action,Controller,Servlet等);注意填入自己的阿里云accesskey和secret;
  4. 参考示例代码,对运行结果进行处理;请注意对服务端出现的错误进行兼容处理。
  5. API详情:验证码服务Android/iOS接口
本文导读目录