号码认证最佳实践

更新时间:
复制为 MD 格式

App的用户注册、登录和安全校验等场景中,需要快速、安全地验证用户手机号码。号码认证服务整合三大运营商的数据网关认证能力,支持一键登录、本机号码校验、短信认证等多种方式。本文介绍如何根据业务场景选择合适的认证方式,并完成从控制台配置到服务端集成的全流程接入。

认证过程示例

以下示例展示了一个典型的用户认证过程:

  • 当用户进行注册或登录操作时,默认使用一键登录的方式来实现免密登录。

  • 当一键登录失败时,自动切换为短信认证或其他认证方式。

该认证流程适用于App的注册、登录、支付交易、账号更换等场景。

02

认证方式介绍

号码认证服务提供多种认证方式,各方式的功能和组成关系如下图所示:

image
  • 号码认证:存在两种形态,其返回的信息与适用场景不同。

    • 本机号码校验:输入手机号码,返回当前上网使用的号码与校验号码是否一致,不返回手机号码。

    • 一键登录:无需输入手机号码,确认授权后,从运营商网关获取当前上网使用的号码。返回的是手机号码。

      由于H5页面的网络不稳定性,需要输入中间4位号码后登录;安卓、iOS客户端无需输入即可登录。

  • 融合认证:集成了一键登录短信认证图形认证(可关闭)等多种方式,集成一次即可实现多个认证功能。借助端风险检测、手机号风险监测,融合认证可自动选择合适的认证方式完成认证,并以短信验证码作为兜底验证。

如何选择合适的认证方式

根据业务场景和集成需求,可以从以下维度选择认证方式:

对比维度

融合认证(推荐)

号码认证

短信认证

图形认证

适用场景

一键登录/注册、更换手机号、重置密码等复杂场景

仅需一键登录或本机号码校验的简单场景

纯服务端验证码校验场景

防机器人、人机校验场景

集成复杂度

一次集成,自动管理多种认证方式切换

轻量集成,如需自动切换需额外集成短信或其他方式

仅服务端接入,无需客户端SDK

需集成客户端SDK和服务端API

认证方式切换

内置自动切换和兜底机制

需自行实现切换逻辑

-

-

集成方式

服务端+客户端

服务端+客户端

仅服务端

服务端+客户端

  • 融合认证:内置一键登录/注册、更换手机号、重置密码、绑定新手机号、验证绑定手机号场景,SDK会根据具体的场景,内部自动管理和切换不同的登录方式,直至登录成功,能适应更为复杂的使用场景。

  • 号码认证:更为轻量化的认证方式,如果需要实现认证方式自动切换,还需要额外集成短信认证或其他认证方式。

各认证方式的SDK、套餐包和接入文档如下表所示:

认证方式

集成方式

SDK

可抵扣的套餐包

接入说明

融合认证

服务端+客户端

融合认证 SDK

短信认证(API版本)

图形认证

融合认证集成

号码认证

一键登录

服务端+客户端

号码认证 SDK

号码认证

号码认证集成

本机号码校验

短信认证

仅服务端

-

短信认证(API版本)

短信认证API

图形认证

服务端+客户端

图形认证 SDK

图形认证

图形认证集成

说明

计费与套餐包详情,请参见产品计费

可以选择以下两种认证方式,实现示例中的认证过程:

  • 融合认证:推荐方式。一次集成即可自动管理多种认证方式的切换。

  • 号码认证+短信认证:轻量集成方式,分别接入号码认证和短信认证,自行管理切换逻辑。

如何集成号码认证

集成号码认证的步骤如下:

  1. 完成前提条件:注册账号、开通服务、获取AccessKey。

  2. 号码认证服务控制台创建认证方案,获取方案Code。

  3. 集成客户端SDK。

  4. 配置AccessKey并接入服务端API。

说明

融合认证和号码认证+短信认证的步骤有所不同。选择融合认证(推荐)可一次集成获得自动切换能力;选择号码认证+短信认证需分别接入对应SDKAPI。

前提条件

在开始集成前,确保已完成以下准备工作:

序号

准备项

说明

1

注册账号并完成实名认证

注册阿里云账号,并完成企业实名认证个人实名认证

2

开通号码认证服务

登录号码认证服务控制台,按页面提示开通服务。

3

创建RAM用户并获取AccessKey

服务端调用API时需要使用AccessKey IDAccessKey Secret进行身份验证。建议创建RAM用户并为其授予号码认证服务的操作权限,再创建AccessKey。

具体操作请参见创建AccessKey

重要

AccessKey Secret只在创建时显示一次,请妥善保管。建议使用RAM用户AccessKey,避免使用主账号AccessKey。

4

配置访问凭据

获取AccessKey后,建议通过环境变量配置凭据,避免在代码中硬编码。执行以下命令设置环境变量:


# Linux/macOS
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your_access_key_id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your_access_key_secret>

# Windows (CMD)
set ALIBABA_CLOUD_ACCESS_KEY_ID=<your_access_key_id>
set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your_access_key_secret>
                  

更多凭据配置方式(如使用配置文件或STS Token),请参见管理访问凭据

集成融合认证

步骤一:创建认证方案

  1. 登录号码认证服务控制台,在左侧导航栏上,选择融合认证(基于场景) > 融合认证方案管理

  2. 进入融合认证方案管理页面,单击新增融合认证方案

  3. 填写方案名称、App名称等信息。Android操作系统需要填写应用包名及包签名,iOS操作系统需要填写BundleID。

  4. 方案创建成功后,在融合认证方案管理页面查看所有已创建的方案,获取方案Code

步骤二:设置认证策略(可选)

融合认证方案默认继承全局策略,可对全局策略进行设置,或单独对方案进行策略设置。若选择使用默认策略,可跳过此步骤。

修改全局策略

修改全局策略后,将对所有使用全局策略的方案生效。若选择使用默认策略,可跳过此步骤。

  1. 登录号码认证服务控制台在左侧导航栏上,选择融合认证(基于场景) > 认证策略设置

  2. 全局策略页签下,选择需要修改设置的场景。

    页面显示基础信息区域,包含选择场景下拉框(如手机号一键登录/注册场景)、场景说明及场景id,以及日志功能开关。

  3. 在策略配置图中,单击需要配置的节点。

    策略配置图包含以下节点:开始端风险检测自动决策,之后分为两条路径,分别经过图形验证码手机号风险检测图形验证码

  4. 在弹窗中单击修改配置后,即可配置该节点。

    号码认证节点为例,可设置功能开关、认证设置(如号码认证超时后切换短信认证、调用异常时进入短信认证环节),页面下方包含计费提示信息,完成后单击确定

如需要恢复默认设置,可再次单击节点,在弹窗中单击修改配置后,单击恢复为默认配置。

修改方案策略

方案策略的设置仅对选择的认证方案生效,可对不同方案单独设置策略。

  1. 登录号码认证服务控制台在左侧导航栏上,选择融合认证(基于场景) > 认证策略设置

  2. 方案策略页签下,选择需要修改设置的方案code应用场景

    其中基础信息区域展示选定方案的方案名称、应用端、创建时间等详情,可用场景如手机号一键登录/注册场景

  3. 修改继承全局策略为不继承。

  4. 在策略配置图中,单击需要配置的节点。

    策略配置图包含以下节点:开始端风险检测自动决策,之后分为两条路径,分别经过图形验证码手机号风险检测图形验证码

  5. 在弹窗中单击修改配置后,即可配置该节点。

    号码认证节点为例,可设置功能开关、认证设置(如号码认证超时后切换短信认证、调用异常时进入短信认证环节),页面下方包含计费提示信息,完成后单击确定

步骤三:客户端集成

登录号码认证服务控制台概览页面,在右侧的API & SDK区域单击立即下载,下载融合认证SDK集成到App。

AndroidiOSSDK中都包含Demo工程,可以按照Demo的代码指示来实现用户认证流程。

步骤四:服务端集成

集成客户端SDK后,需要在服务端接入API来完成用户验证和登录。

准备工作

  1. 安装服务端SDK。登录号码认证服务控制台概览页面,在API & SDK区域获取服务端SDK。

  2. 确保已按前提条件配置好AccessKey环境变量。

  3. 使用AccessKey初始化SDK Client。以下为Java示例:

    
    import com.aliyun.dypnsapi20170525.Client;
    import com.aliyun.teaopenapi.models.Config;
    
    // 使用环境变量中的AccessKey初始化Client
    Config config = new Config()
        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
        .setEndpoint("dypnsapi.aliyuncs.com");
    Client client = new Client(config);
                        

调用API

初始化Client后,调用以下API完成认证流程:

集成号码认证&短信认证

该方案需分别接入号码认证SDK和短信认证API。当一键登录失败时,由服务端调用短信认证API发送验证码,实现认证方式的降级切换。

步骤一:创建认证方案

  1. 登录号码认证服务控制台,在左侧导航栏上,选择号码认证服务 > 号码认证方案管理

  2. 进入号码认证方案管理页面,单击新增号码认证方案

  3. 填写方案名称、App名称等信息。Android系统需要填写应用包名、包签名,iOS系统需要填写BundleID,Harmony系统需要填写应用包名、包签名、AppId。

  4. 方案创建成功后,在号码认证方案管理页面查看所有已创建的方案。

步骤二:准备短信签名和短信模板

重要

由于运营商加强对短信签名的管控,所有短信签名需完成实名制报备才可下发短信。您自定义的签名可能面临下发失败问题,推荐您使用号码认证服务赠送的短信签名和模板进行短信认证,系统赠送签名必须搭配系统赠送模板使用。

  1. 登录号码认证服务控制台在左侧导航栏上,选择短信认证服务 > 短信认证参数管理

  2. 签名配置模板配置页签中查看赠送的签名和模板,可任意选择列表内的签名和模板进行短信下发。

步骤三:客户端集成

登录号码认证服务控制台概览页面,在右侧的API & SDK区域单击立即下载,下载号码认证SDK集成到App。

AndroidiOSSDK中都包含Demo工程,可以按照Demo的代码指示来实现用户认证流程。

短信认证无需在客户端集成,仅需接入服务端接口即可。

步骤四:服务端集成

集成客户端SDK后,需要在服务端接入API来完成用户验证和登录。

准备工作

  1. 安装服务端SDK。登录号码认证服务控制台概览页面,在API & SDK区域获取服务端SDK。

  2. 确保已按前提条件配置好AccessKey环境变量。

  3. 使用AccessKey初始化SDK Client。以下为Java示例:

    
    import com.aliyun.dypnsapi20170525.Client;
    import com.aliyun.teaopenapi.models.Config;
    
    // 使用环境变量中的AccessKey初始化Client
    Config config = new Config()
        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
        .setEndpoint("dypnsapi.aliyuncs.com");
    Client client = new Client(config);
                        

调用API

初始化Client后,调用以下API完成认证流程:

  • 调用GetMobile接口完成一键登录取号,或调用VerifyMobile接口完成本机号码校验认证。

  • 调用SendSmsVerifyCode接口发送短信验证码,可根据参数描述自定义验证码生成规则。

  • 调用CheckSmsVerifyCode接口进行短信验证码核验,可根据返回参数VerifyResult判断核验结果。

视频讲解