如何进行安全认证服务端验证码认证接入 | 您所在的位置:网站首页 › 阿里云短信服务开通流程 › 如何进行安全认证服务端验证码认证接入 |
验证码认证能力支持用户实现手机验证码快捷登录功能,也支持仅用于发送验证码或通知类短信。以下介绍具体对接步骤。 启用验证码认证创建一个应用,认证方式勾选“短信认证”,然后选择认证时使用的短信签名: 系统默认会有一条“阿里云IDaaS”的签名,如果想自定义签名,可以在【短信管理】中添加: 短信模板默认使用“快捷登录验证码短信”: ![]() 应用密钥用于签名请求参数,Hash 方式为 HmacSHA256 + Hex,调用接口时会用到。 配置短信防暴策略您可以控制发送短信的频率,避免恶意频繁调用发送短信验证码接口。 目前支持从 2 个维度控制发送短信的频率,包括客户端IP和手机号。手机号是必须的,客户端IP是可选的,只有传入了对应维度的数据,才能进行限流控制。客户可根据实际情况调整限制次数。 验证码认证流程以下总结 3 个验证码认证的常见场景。 正常流程一次性登录成功。 获取验证码过于频繁,需要先通过图形验证码检查,才能获取验证码。 获取验证码次数过多,一段时间内都无法再获取验证码。 验证码认证使用同一个接口,通过 DoraemonAction 参数区分不同的具体行为,不同的 DoraemonAction 对应的请求参数和响应结果会不同。具体请求参数都通过 MobileExtendParamsJson 传递。 请求参数 名称 类型 必填 示例值 描述 ApplicationExternalId String 是 A0000001 应用 ID,该字段在创建应用时指定,在应用详情页中查看 ServiceCode String 是 SMS 认证方式标识,此处固定为:SMS DoraemonAction String 是 SendSmsCode 短信认证相关 发送短信验证码:SendSmsCode 检查短信验证码:VerifySmsCode 获取图形验证码:GetCaptchaCode 检查图形验证码:VerifyCaptchaCode 短信相关 发送短信:Send MobileExtendParamsJson String 是 eyJpZCI6ImI4NzkyOD 业务参数先转成JSON 字符串,再 base64 编码 MobileExtendParamsJsonSign String 是 2d1adaf****8bfad MobileExtendParamsJson 的签名值,使用应用密钥签名 XClientIP String 否 10.11.XXX.XX 客户端真实IP,建议传递该字段,安全认证服务会基于该字段进行智能安全风控检测。基于客户端IP的短信防暴策略也需要此参数。 常见状态码 名称 描述 Params.Illegal 参数非法,通常是验证码标志无效,包括:不存在、已过期(5分钟)、验证次数过多(3次)、已验证 Operation.Failure.SmsAuth.Overflow.Captcha 超过调用次数限制,需要通过图形验证码 Operation.Failure.SmsAuth.Overflow.Pause 超过调用次数限制,短时间内无法再次调用 发送短信验证码DoraemonAction 为 SendSmsCode。 MobileExtendParamsJson 参数 名称 类型 必填 示例值 描述 id String 否 b87928958d93caca4 验证码标志 businessId String 是 QUICK_LOGIN 业务标志,QUICK_LOGIN 为快捷登录 phoneRegion String 否 86 手机区号,默认为 86 phoneNumber String 是 186****2909 手机号 返回数据 名称 类型 示例值 描述 Success boolean true 操作是否成功 Code String Opreation.Success 状态码,参考上表 Message String Opreation.Success 具体的描述信息 RequestId String 1C0EE50A-B3BB-42FD-AB59 请求ID Data String 具体的业务数据 Data 数据 名称 类型 示例值 描述 id String b87928958d93caca405aaf 验证码标志,验证时需要使用 检查短信验证码DoraemonAction 为 VerifySmsCode。 MobileExtendParamsJson 参数 名称 类型 必填 示例值 描述 id String 是 b87928958d93caca4 验证码标志 answer String 是 2319 短信验证码值 返回数据 名称 类型 示例值 描述 Success boolean true 操作是否成功 Code String Opreation.Success 状态码,参考上表 Message String Opreation.Success 具体的描述信息 RequestId String 1C0EE50A-B3BB-42FD 请求ID Data String 具体的业务数据 Data 数据 名称 类型 示例值 描述 id String b87928958d93caca405aaf 验证码标志 matched Boolean true 验证码是否匹配 reachFailedCountThreshold Boolean false 达到失败次数阈值,如果为 true,需要重新调用发送短信验证码接口 获取图形验证码DoraemonAction 为 GetCaptchaCode。 MobileExtendParamsJson 参数 名称 类型 必填 示例值 描述 id String 否 b87928958d93caca4 验证码标志 返回数据 名称 类型 示例值 描述 Success boolean true 操作是否成功 Code String Opreation.Success 状态码,参考上表 Message String Opreation.Success 具体的描述信息 RequestId String 1C0EE50A-B3BB-42FD-AB59 请求ID Data String 具体的业务数据 Data 数据 名称 类型 示例值 描述 id String b87928958d93caca405aaf 图形验证码标志,验证图形验证码时需要使用 question String iVBORw0KGgoAAAANS base64 图片验证码 base64 图片验证码展示为图片时,需添加前缀 data:image/png;base64,{base64图片验证码} 检查图形验证码DoraemonAction 为 VerifyCaptchaCode。 MobileExtendParamsJson 参数 名称 类型 必填 示例值 描述 id String 是 b87928958d93caca4 图形验证码标志 answer String 是 2319 图形验证码值 返回数据 名称 类型 示例值 描述 Success boolean true 操作是否成功 Code String Opreation.Success 状态码,参考上表 Message String Opreation.Success 具体的描述信息 RequestId String 1C0EE50A-B3BB-42FD-AB59 请求ID Data String 具体的业务数据 Data 数据 名称 类型 示例值 描述 id String b87928958d93caca405aaf 验证码标志 matched Boolean true 验证码是否匹配 reachFailedCountThreshold Boolean false 达到失败次数阈值,如果为 true,需要重新调用发送短信验证码接口 发送短信DoraemonAction 为 Send。 MobileExtendParamsJson 参数 名称 类型 必填 示例值 描述 signName String 是 阿里云IDaaS 短信签名,需要先通过审核 templateCode String 是 QUICK_LOGIN 短信模板,需要先通过审核 templateParams String 否 {"code":"AKtT"} 模板参数,JSON 字符串 phone String 是 86-1390000**** 手机号,格式为:区号-号码 JAVA SDKMaven 依赖 com.aliyun aliyun-java-sdk-idaas-doraemon [1.3.1,) com.aliyun aliyun-java-sdk-core [4.4.3,) 示例应用短信相关代码示例 在运行示例应用前,请先在 application.yml 文件中配置 RAM 账号AK 和应用 ID及密钥: idaas: doraemon: #阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 #强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险 accessKeyId: accessKeySecret: applicationExternalId: applicationExternalSecret: 运行效果![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |