在App的用户注册、登录和安全校验等场景中,需要快速、安全地验证用户手机号码。号码认证服务整合三大运营商的数据网关认证能力,支持一键登录、本机号码校验、短信认证等多种方式。本文介绍如何根据业务场景选择合适的认证方式,并完成从控制台配置到服务端集成的全流程接入。
认证过程示例
以下示例展示了一个典型的用户认证过程:
该认证流程适用于App的注册、登录、支付交易、账号更换等场景。 |
|
认证方式介绍
号码认证服务提供多种认证方式,各方式的功能和组成关系如下图所示:
号码认证:存在两种形态,其返回的信息与适用场景不同。
本机号码校验:输入手机号码,返回当前上网使用的号码与校验号码是否一致,不返回手机号码。
一键登录:无需输入手机号码,确认授权后,从运营商网关获取当前上网使用的号码。返回的是手机号码。
由于H5页面的网络不稳定性,需要输入中间4位号码后登录;安卓、iOS客户端无需输入即可登录。
融合认证:集成了一键登录、短信认证、图形认证(可关闭)等多种方式,集成一次即可实现多个认证功能。借助端风险检测、手机号风险监测,融合认证可自动选择合适的认证方式完成认证,并以短信验证码作为兜底验证。
如何选择合适的认证方式
根据业务场景和集成需求,可以从以下维度选择认证方式:
对比维度 | 融合认证(推荐) | 号码认证 | 短信认证 | 图形认证 |
适用场景 | 一键登录/注册、更换手机号、重置密码等复杂场景 | 仅需一键登录或本机号码校验的简单场景 | 纯服务端验证码校验场景 | 防机器人、人机校验场景 |
集成复杂度 | 一次集成,自动管理多种认证方式切换 | 轻量集成,如需自动切换需额外集成短信或其他方式 | 仅服务端接入,无需客户端SDK | 需集成客户端SDK和服务端API |
认证方式切换 | 内置自动切换和兜底机制 | 需自行实现切换逻辑 | - | - |
集成方式 | 服务端+客户端 | 服务端+客户端 | 仅服务端 | 服务端+客户端 |
融合认证:内置一键登录/注册、更换手机号、重置密码、绑定新手机号、验证绑定手机号场景,SDK会根据具体的场景,内部自动管理和切换不同的登录方式,直至登录成功,能适应更为复杂的使用场景。
号码认证:更为轻量化的认证方式,如果需要实现认证方式自动切换,还需要额外集成短信认证或其他认证方式。
各认证方式的SDK、套餐包和接入文档如下表所示:
认证方式 | 集成方式 | SDK | 可抵扣的套餐包 | 接入说明 | |
融合认证 | 服务端+客户端 | 融合认证 SDK | |||
号码认证 | 一键登录 | 服务端+客户端 | 号码认证 SDK | ||
本机号码校验 | |||||
短信认证 | 仅服务端 | - | |||
图形认证 | 服务端+客户端 | 图形认证 SDK | |||
计费与套餐包详情,请参见产品计费。
可以选择以下两种认证方式,实现示例中的认证过程:
融合认证:推荐方式。一次集成即可自动管理多种认证方式的切换。
号码认证+短信认证:轻量集成方式,分别接入号码认证和短信认证,自行管理切换逻辑。
如何集成号码认证
集成号码认证的步骤如下:
完成前提条件:注册账号、开通服务、获取AccessKey。
在号码认证服务控制台创建认证方案,获取方案Code。
集成客户端SDK。
配置AccessKey并接入服务端API。
融合认证和号码认证+短信认证的步骤有所不同。选择融合认证(推荐)可一次集成获得自动切换能力;选择号码认证+短信认证需分别接入对应SDK和API。
前提条件
在开始集成前,确保已完成以下准备工作:
序号 | 准备项 | 说明 |
1 | 注册账号并完成实名认证 | |
2 | 开通号码认证服务 | 登录号码认证服务控制台,按页面提示开通服务。 |
3 | 创建RAM用户并获取AccessKey | 服务端调用API时需要使用AccessKey ID和AccessKey Secret进行身份验证。建议创建RAM用户并为其授予号码认证服务的操作权限,再创建AccessKey。 具体操作请参见创建AccessKey。 重要 AccessKey Secret只在创建时显示一次,请妥善保管。建议使用RAM用户AccessKey,避免使用主账号AccessKey。 |
4 | 配置访问凭据 | 获取AccessKey后,建议通过环境变量配置凭据,避免在代码中硬编码。执行以下命令设置环境变量: 更多凭据配置方式(如使用配置文件或STS Token),请参见管理访问凭据。 |
集成融合认证
步骤一:创建认证方案
登录号码认证服务控制台,在左侧导航栏上,选择。
进入融合认证方案管理页面,单击新增融合认证方案。
填写方案名称、App名称等信息。Android操作系统需要填写应用包名及包签名,iOS操作系统需要填写BundleID。
方案创建成功后,在融合认证方案管理页面查看所有已创建的方案,获取方案Code。
步骤二:设置认证策略(可选)
融合认证方案默认继承全局策略,可对全局策略进行设置,或单独对方案进行策略设置。若选择使用默认策略,可跳过此步骤。
修改全局策略
修改全局策略后,将对所有使用全局策略的方案生效。若选择使用默认策略,可跳过此步骤。
登录号码认证服务控制台,在左侧导航栏上,选择。
在全局策略页签下,选择需要修改设置的场景。
页面显示基础信息区域,包含选择场景下拉框(如手机号一键登录/注册场景)、场景说明及场景id,以及日志功能开关。
在策略配置图中,单击需要配置的节点。
策略配置图包含以下节点:开始 → 端风险检测 → 自动决策,之后分为两条路径,分别经过图形验证码或手机号风险检测 → 图形验证码。
在弹窗中单击修改配置后,即可配置该节点。
以号码认证节点为例,可设置功能开关、认证设置(如号码认证超时后切换短信认证、调用异常时进入短信认证环节),页面下方包含计费提示信息,完成后单击确定。
如需要恢复默认设置,可再次单击节点,在弹窗中单击修改配置后,单击恢复为默认配置。
修改方案策略
方案策略的设置仅对选择的认证方案生效,可对不同方案单独设置策略。
登录号码认证服务控制台,在左侧导航栏上,选择。
在方案策略页签下,选择需要修改设置的方案code和应用场景。
其中基础信息区域展示选定方案的方案名称、应用端、创建时间等详情,可用场景如手机号一键登录/注册场景。
修改继承全局策略为不继承。
在策略配置图中,单击需要配置的节点。
策略配置图包含以下节点:开始 → 端风险检测 → 自动决策,之后分为两条路径,分别经过图形验证码或手机号风险检测 → 图形验证码。
在弹窗中单击修改配置后,即可配置该节点。
以号码认证节点为例,可设置功能开关、认证设置(如号码认证超时后切换短信认证、调用异常时进入短信认证环节),页面下方包含计费提示信息,完成后单击确定。
步骤三:客户端集成
登录号码认证服务控制台概览页面,在右侧的API & SDK区域单击立即下载,下载融合认证SDK集成到App。
Android和iOS的SDK中都包含Demo工程,可以按照Demo的代码指示来实现用户认证流程。
Android客户端接入详情请参见Android客户端接入融合认证。
iOS客户端接入详情请参见iOS客户端接入融合认证。
步骤四:服务端集成
集成客户端SDK后,需要在服务端接入API来完成用户验证和登录。
准备工作
安装服务端SDK。登录号码认证服务控制台的概览页面,在API & SDK区域获取服务端SDK。
确保已按前提条件配置好AccessKey环境变量。
使用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完成认证流程:
调用GetFusionAuthToken接口,获取鉴权Token,鉴权Token将用于初始化客户端SDK。
调用VerifyWithFusionAuthToken接口,传入客户端SDK获取的统一认证Token,获取认证结果。
集成号码认证&短信认证
该方案需分别接入号码认证SDK和短信认证API。当一键登录失败时,由服务端调用短信认证API发送验证码,实现认证方式的降级切换。
步骤一:创建认证方案
登录号码认证服务控制台,在左侧导航栏上,选择。
进入号码认证方案管理页面,单击新增号码认证方案。
填写方案名称、App名称等信息。Android系统需要填写应用包名、包签名,iOS系统需要填写BundleID,Harmony系统需要填写应用包名、包签名、AppId。
方案创建成功后,在号码认证方案管理页面查看所有已创建的方案。
步骤二:准备短信签名和短信模板
由于运营商加强对短信签名的管控,所有短信签名需完成实名制报备才可下发短信。您自定义的签名可能面临下发失败问题,推荐您使用号码认证服务赠送的短信签名和模板进行短信认证,系统赠送签名必须搭配系统赠送模板使用。
登录号码认证服务控制台,在左侧导航栏上,选择。
在签名配置、模板配置页签中查看赠送的签名和模板,可任意选择列表内的签名和模板进行短信下发。
步骤三:客户端集成
登录号码认证服务控制台概览页面,在右侧的API & SDK区域单击立即下载,下载号码认证SDK集成到App。
Android和iOS的SDK中都包含Demo工程,可以按照Demo的代码指示来实现用户认证流程。
Android客户端接入一键登录和本机号码校验SDK,详情请参见Android客户端号码认证。
iOS客户端接入一键登录和本机号码校验SDK,详情请参见iOS客户端号码认证。
短信认证无需在客户端集成,仅需接入服务端接口即可。
步骤四:服务端集成
集成客户端SDK后,需要在服务端接入API来完成用户验证和登录。
准备工作
安装服务端SDK。登录号码认证服务控制台的概览页面,在API & SDK区域获取服务端SDK。
确保已按前提条件配置好AccessKey环境变量。
使用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判断核验结果。
