场景简介

短信认证是最基本也是用户使用最多的辅助认证方式,熟悉了用户名密码+短信认证场景后,要实现其他类型的主认证+辅助认证,流程完全一致,有需求时参考SDKDemo中的SecondAuthActivity实现。

前置步骤

  1. 在实际集成之前,我们要确保已经进行过开发准备
  2. 在控制台创建测试用户,并配置好用户名密码认证+短信认证,参考产品手册

流程图

流程图

集成步骤

1、实现用户名密码主认证

参考典型场景用户名密码认证

2、处理二次认证-短信认证

doSecondaryAuth接口详情

如果aTrust身份认证服务器有启用短信认证时会进入当前流程,用户名密码认证通过后会执行onAuthProcess回调,并通过nextAuthType参数告知需要二次认证的类型为短信认证。 当调用该回调时,会先发送短信到用户手机上,所以此时只需展示对应的短信认证UI界面,通过UI收集到短信验证码,调用二次认证接口完成二次认证。

注意:如果管理员配置了除短信验证码以外的二次认证方式(如首次登陆强制修改密码),也会进入到此回调中,此时如果确认不需要支持此二次认证,建议提示用户不支持此认证,让管理员调整配置

示例代码如下:

    /**
     * 需要二次认证
     *
     * @param nextAuthType 下一步认证类型
     * @param message      下一步认证信息
     */
   public onAuthProcess(authType: SFAuthType, message: SFBaseMessage) {
        console.info(TAG, "onAuthProcess:", authType, JSON.stringify(message));
        this.loadingDialog.close();
        switch (authType) {
            case SFAuthType.AUTH_TYPE_SMS:
                // 处理短信主认证的一些逻辑,如显示验证码输入框
                break;
            default:
                this.showFailDialog(`暂不支持此种认证类型(${authType}), 管理员请关掉此认证`);
                break;
        }
    }


    /**
     * 使用短信二次认证
     */
    private void doSmsSecondAuth() {
        let authInfo: Map<string, string> = new Map<string, string>();

        String smsCode = "xxxx"; // 短信验证码

        authParams.set(SFConstants.AUTH_KEY_SMS, smsCode);

        SFUemSDK.getInstance().doSecondaryAuth(authType, authParams);

    }

3、认证成功

主认证和二次认证都成功后,会执行onAuthSuccess回调,至此整个认证流程就结束了,认证成功后,应用就可以正常的访问aTrust管理员配置的内网服务器资源, 执行业务代码

示例代码如下:

     /**
     * 认证成功
     *
     * @param message 认证成功message
     */
   public onAuthSuccess(message: SFBaseMessage) {
        console.info(TAG, "认证成功");
         // 认证成功之后的业务
    }

4、认证失败

如果有认证失败的情况,会执行onAuthFailed回调, 在该回调中提示用户,重新开始认证

示例代码如下:

    /**
     * 认证失败
     *
     * @param message 认证失败message
     */
    public onAuthFailed(message: SFBaseMessage) {
        console.info(TAG, "认证失败!" JSON.stringify(message));
        // 重新开始认证或者其他逻辑
    }

5、重新获取验证码

regetSmsCode接口详情

短信验证码有效期可以通过onAuthProcess中的参数message(参考SFSmsMessage)来获取,短信验证码失效后,可以调用接口重新获取

示例代码如下:

SFUemSDK.getInstance().getSFAuth().regetSmsCode(this);

onRegetSmsCode(success: boolean, message: SFSmsMessage) {

}

results matching ""

    No results matching ""