文档中心 > 阿里聚安全

风控-IOS API

1. 获取数据风控wtoken

#import <SecurityGuardSDK/Open/OpenSecurityGuardManager.h>
#import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h>
#import <SecurityGuardSDK/Open/OpenSecurityBody/OpenSecurityBodyDefine.h>
#import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h>
@protocol IOpenSecurityBodyComponent <NSObject>

/**
 *  获取风控参数
 *  @return 用户昵称,获取失败返回nil
 */
- (NSString*) getSecurityBodyDataEx: (NSString*) timeStamp
                             appKey: (NSString*) appKey
                           authCode: (NSString*) authCode
                        extendParam: (NSDictionary*) extendParam
                               flag: (int) flag
                                env: (int) env
                              error: (NSError* __autoreleasing*) error;

@end

在需要使用数据风控的场景,如注册、登陆、活动页面,可以在用户点击“注册”、“登陆”等业务按钮时、业务逻辑处理前获得该token,服务端通过该token查询风险结果

入参

timeStamp nil

appKey nil

authCode 0335

extendParam nil

flag OPEN_SECURITYBODY_FLAG_FORMAT_GENERAL

env OPEN_SECURITYBODY_ENV_ONLINE

error NSError对象指针

返回

调用成功不为空的wtoken,需要将此token传递到自己的server端,再由自己的server端将此 token透传到聚安全server端,获得最后的风控校验结果

wtoken在后段风险识别使用 参考 数据风控-服务器接入指南-风险识别

注意

发生获取不到wtoken,多半因为0335图片设置有问题。一个图片对应一个bundleid。如果变更bundleid,需要到聚安全网站生成新的图片;如果一个app存在不同版本在使用不同bundleid,需要重新获得图片;在使用msauthdemo时,请将demo的bundleid改成上传ipa时的bundleid。

错误诊断

接口不抛异常。当调用出错的时候,会在命令行中打印相应的错误日志,错误日志以SG ERROR开头:

错误码 含义
NOT FOUND YW_XXX.JPG 203 可能AUTHCODE传递错误,或者没有加入图片到项目
YW_XXX.JPG TOPKEY EROOR 1215 可能AUTHCODE传递错误,或者没有加入图片到项目
SEC_ERROR_SECURITYBODY_INVALID_THREAD 1401 参数不正确,请检查输入的参数
SEC_ERROR_SECURITYBODY_INVALID_THREAD 1402 接口调用线程错误。请在非UI线程内调用此接口(因为本接口有耗时操作)。
SEC_ERROR_SECURITYBODY_NET_ERROR 1403 网络超时或网络断开
SEC_ERROR_SECURITYBODY_SERVER_ERROR 1404 聚安全服务端器错误,请确认应用是否有权限访问此接口
SEC_ERROR_SECURITYBODY_APPKEY_ERROR 1405 加密文件yw_1222_xxx.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey
SEC_ERROR_SECURITYBODY_SIGNATURE_ERROR 1406 加密文件yw_1222_xxx.jpg格式或其内数据有问题。常见原因为用错图片(iOS与Android图片不通用)或者图片内没有存放对应的Top Appkey
SEC_ERROR_SECURITYBODY_ENCRYPTION_ERROR 1407 数据加密错误,
SEC_ERROR_SECURITYBODY_TOP_ERROR 1408 TOP协议错误,请检查手机时间设置是否正常,加密图片yw_1222_0335.jpg使用是否正确
SEC_ERROR_SECURITYBODY_CONCURRENT 1409 接口被并发调用错误;本接口不支持多线程同时调用
SEC_ERROR_SECURITYBODY_UNSUPPORTED 1498 接口在这个版本的SDK中不支持
SEC_ERROR_SECURITYBODY_UNKNOWN_ERR 1499 未知错误,请重试

2.验证类型定义

MSAuthDefines.h

/**
 * 当前支持的验证类型
 */
typedef enum : NSUInteger {
    MSAuthTypeSlide,
    MSAuthTypeSms,
    MSAuthTypeCall,
} MSAuthType;

3.启动风险验证UI

import MSAuthVCFactory.h

/**
 *  获取验证VC的工厂方法
 *
 *  @param type     验证类型。目前支持的类型有滑动验证、短信验证和电话验证
 *  @param jsonData 聚安全服务器透传下发数据
 *  @param delegate 处理回调结果的代理
 *  @param language 需要展示的语言,如:zh_CN 简体中文, en 英文,language要和相应的Localizable.strings对应。nil为当前环境语言。如果语言文件不存在显示英文
 *  @param authCode 0335
 *  @param appKey   根据接入环境需要填入默认填写空
 *  @return 返回一个实例VC
 */
+ (UIViewController *)vcWithAuthType:(MSAuthType)type
                            jsonData:(NSString *)jsonData
                            language:(NSString*)lang
                            Delegate:(id<MSAuthProtocol>)delegate
                            authCode:(NSString*)code
                            appKey  :(NSString*)key;

image

typejsondata 具体参考 数据风控-服务器接入指南-风险识别

参数 赋值
type 图中captcha_type
jsonData 图中captcha_client_need_info
appKey 根据接入环境需要填入默认填写空
authCode 填写0335
  • 使用pushViewController 呼出界面

    UIViewController *vc = [MSAuthVCFactory  vcWithAuthType:服务器回传的验证类型
                                                       jsonData:服务器回传的验入参
                                                       language:@"en"
                                                       Delegate:self
                                                       authCode:@"0335"
                                                         appKey:nil];
    
    [self.navigationController pushViewController:vc animated:YES];
  • 使用presentViewController,带navigationbar

    UINavigationController *navigationController =
    [[UINavigationController alloc] initWithRootViewController:vc];
    
    //now present this navigation controller modally
    [self presentViewController:navigationController
                       animated:YES
                     completion:^{
    
                     }];

4.无风险采集下验证

/**
 *  验证VC的工厂方法, 使用风险验证用户直接调用这个接口
 *  @param type     验证类型。目前支持的类型有滑动验证
 *  @param language 需要展示的语言,如:zh_CN 简体中文, en 英文,language要和相应的Localizable.strings对应。nil为当前环境语言。如果语言文件不存在显示英文
 *  @param delegate 处理回调结果的代理
 *  @param authCode 填写0335
 *  @param appKey   根据接入环境需要填入默认填写空
 *  @return         返回一个实例VC
 */

+ (UIViewController *)simapleVerifyWithType:(MSAuthType)type
                                   language:(NSString*)lang
                                   Delegate:(id<MSAuthProtocol>)delegate
                                   authCode:(NSString*)code
                                   appKey  :(NSString*)key;

与前一个接口的区别,不需要传入jsondata。调用可以直接做为人机识别调用使用

type具体参考 数据风控-服务器接入指南-风险识别

参数 赋值
type 图中captcha_type
appKey 根据接入环境需要填入默认填写空
authCode 填写0335

5.simapleVerifyWithType和vcWithAuthType区别

simapleVerifyWithType是纯验证接口,功能为纯粹的验证,用户可以使用聚安全的风控识别能力也可以使用原有系统能力。目前支持的验证类型为滑动.从能力上讲,simapleVerifyWithType是做为人机识别验证模式

vcWithAuthType会将前面JAQ风险识别带入到验证中,识别的结果以jsonDatatype形式做为。用户服务器可以将带验证人的电话号码传入,所以在滑动以外还可以支持语音``短信。从能力上看vcWithAuthType是做为人机识别验证模式,还可以实现对于人身份核实(比如,改密,注册场景)

6.验证结果回调

在回调函数中用户自己关闭controller,sdk内部不负责控件的关闭

typedef enum {
 VERIFY_REUSLT_OK = 0,
 VERIFY_REUSLT_FAIL = 1
}t_verify_reuslt
@protocol MSAuthProtocol <NSObject>

/**
 *  验证结果的回调
 *
 *  @param error     		    验证错误返回码, nil表示正确 非空为验证失败
 *  @param sessionId           聚安全服务器下发二次验证sessionid,
 * 								三方服务器利用token获得验证结果
 */
- (void)verifyDidFinishedWithResult:(t_verify_reuslt)code 
                                                   Error:(NSError *)error
                                            SessionId:(NSString *)sessionId;
@end

参数error对象 ErrorDomain详细定义

  1. AliAuthGeneric 一般性错误来自网络异常
  2. AliAuthServer 网关通信错误
  3. AliAuthServiceNc 划一划业务错误
  4. AliAuthService 验证业务错误

参数error对象 中出现sendStatus详细定义

枚举值 含义
-10 短信验证码发送失败
-20 语音验证码发送失败
-30 邮件验证码发送失败
-50 摇一摇发起失败
-60 滚小球发起失败

参数error对象 中出现verifyStatus详细定义

枚举值 含义
-11 短信验证码验证失败
-21 语音验证码验证失败
-31 邮件验证码验证失败
-51 摇一摇检查失败
-61 滚小球检查失败

7.识别与验证指南

例子代码

Step 0: 风险判断和采集

进行登录,改密,找密,注册等涉及敏感场景时,需要调用风险采集获得token。调用者需要把token传到用户的服务端,服务端用token请求聚安全服务端获得相应的风险判断。聚安全会把风险判断以json形式返回。

#import <SecurityGuardSDK/Open/OpenSecurityGuardManager.h>
#import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h>
#import <SecurityGuardSDK/Open/OpenSecurityBody/OpenSecurityBodyDefine.h>
#import <SecurityGuardSDK/Open/OpenSecurityBody/IOpenSecurityBodyComponent.h>
获得风险采集信息             

id<IOpenSecurityBodyComponent> sbComp = [[OpenSecurityGuardManager getInstance] getSecurityBodyComp];
NSError* error = nil;
NSString* wtoken = [sbComp getSecurityBodyDataEx: nil
                                          appKey: nil
                                        authCode: @"0335"
                                     extendParam: nil
                                            flag: OPEN_SECURITYBODY_FLAG_FORMAT_GENERAL //指定格式
                                             env: OPEN_SECURITYBODY_ENV_ONLINE //指定环境
                                           error: &error];

如果token返回为nil表示风险采集失败,如果风险采集失败建议认为验证失败,用户阻止其后操作

返回的wtoken,需要到服务器端进行风险判断.具体调用参看 风险识别

Step 1: 引入头文件.

#import <MSAuthSDK/MSAuthSDK.h>

Step 2: 调用工厂类生成所需二次验证 viewcontroller

UIViewController *vc = [MSAuthVCFactory  vcWithAuthType:服务器回传的验证类型
                                                   jsonData:服务器回传的验入参
                                                   language:@"en"
                                                   Delegate:self
                                                   authCode:@"0335"
                                                     appKey:nil];

[self.navigationController pushViewController:vc animated:YES];

Step 3: 实现delegate回调

@interface ViewController () <MSAuthProtocol>

...

#pragma mark - MSAuthProtocol methods

- (void)verifyDidFinishedWithError:(NSError *)error SessionId:(NSString *)sessionId {

    dispatch_async(dispatch_get_main_queue(), ^{
        if (error) {
            NSLog(@"验证失败 %@", error);
        } else {
            NSLog(@"验证通过 %@", sessionId);
        }
        
        //将sessionid传到经过app服务器做二次验证
    });
}

Step 4: sessionid 验证

参考 数据风控-服务器接入指南-风险验证

8.验证模式指南

例子代码

Step 0: 引入头文件.

#import <MSAuthSDK/MSAuthSDK.h>

Step 0: 调用工厂类生成所需二次验证 viewcontroller

UIViewController *vc = [MSAuthVCFactory simapleVerifyWithType:服务器回传的验证类型
                                                    language:@"en"
                                                  Delegate:self
                                                authCode:@"0335"
                                                  appKey:nil];

Step 1: 实现delegate回调

@interface ViewController () <MSAuthProtocol>

...

#pragma mark - MSAuthProtocol methods

- (void)verifyDidFinishedWithError:(NSError *)error SessionId:(NSString *)sessionId {

    dispatch_async(dispatch_get_main_queue(), ^{
        if (error) {
            NSLog(@"验证失败 %@", error);
        } else {
            NSLog(@"验证通过 %@", sessionId);
        }
        [self.navigationController popViewControllerAnimated:YES];
        //将sessionid传到经过app服务器做二次验证
    });
}

Step 2:sessionid 验证

参考 数据风控-服务器接入指南-风险验证

9.UI定制与多语言

  1. UI定制

    你通过修改MSAuthSDK.framework中两个bundles: MSADefaultImages.bundle和MSADefaultLocale.bundle中的字符串和图片来定制UI.

  2. 多语言

    MSADefaultLocale.bundle 增加相应语言

    image

FAQ

关于此文档暂时还没有FAQ
返回
顶部