图形验证码服务接入(四)阿里云盾接入

2018-10-02  本文已影响614人  youthcity

接入可参考项目工程:https://github.com/youthcity/graph-captcha

调用流程

调用流程

上图为官方提供的调用流程图,服务端只需关心红框中的内容:

  1. 客户端验证通过后获取到验证参数
  2. 将验证参数传到服务端进行验签

接入

服务端接入

服务端接入可参考官方文档:https://help.aliyun.com/document_detail/66341.html?spm=a2c4g.11186623.6.574.4a11169bnSpGO7

若使用 Java、.NET、PHP、Python等语言,可以使用官方提供的服务端SDK进行接入。若是其他语言(比如NodeJS),则只能通过调用官方API的形式。需要指出的是,官方的API文档并不准确。例如,人机验证的HOST地址文档中为 http://jaq.aliyuncs.com/,实际应为 http://afs.aliyuncs.com。公共参数中API版本号文档中为 2016-11-23,实际应为 2018-01-12

若在接入的过程中,遇到困难,尽早提工单联系阿里云的专员解决。上述,提到的文档问题,已经向阿里云的专员反馈,但是文档还没有改正过来。大家可以参看我的代码实现接入。

阿里云的API和腾讯云的API类似,都是由公共参数与业务参数组成。为了避免自己拼装路由出现错误,使用了官方包 @alicloud/pop-core,完成这些接口参数的生成与拼接。服务端主要代码如下:

// https://github.com/youthcity/graph-captcha/blob/master/src/ali_afs/client.ts

  constructor(config:Config) {
    this.access_key_id = config.access_key_id;
    this.access_key_secret = config.access_key_secret;

    this.client = new RPCClient({
      accessKeyId: this.access_key_id,
      accessKeySecret: this.access_key_secret,
      endpoint: 'http://afs.aliyuncs.com',
      apiVersion: '2018-01-12',
      codes: [100, 900],
    })
  }

  public async verify(params:VerifyParams) : Promise<boolean> {
    const ACTION_TYPE = 'AuthenticateSig';
    let is_pass = false;
    try {
      const res = await this.client.request(ACTION_TYPE, params);

      if (res && res.Code == AFSCode.PASS) {
        is_pass = true;
      }

    } catch (error) {
      console.log(error);
    }

    return is_pass;
  }

客户端接入

Step 1 阿里云数据风控控制台,申请应用

路径:人机验证 —— 新增配置

配置应用

经过与阿里云的专员确认,表单中 高峰期PV 字段可以随意填写,并不会影响验证服务使用。我们需要根据自己的应用类型、验证方式进行填写。客户端接入是与这些配置强关联。(因为这个原因,我们最后放弃了阿里云盾作为验证码服务。客户端接入成本过高)

Step 2 应用代码接入

申请完配置后,我们就可以看到客户端接入的代码了。阿里云会根据申请的配置动态生成客户端接入代码。我们按照提示,复制粘贴代码到自己的项目里就可以完成接入了。

应用代码

优缺点分析

缺点

  1. 客户端接入成本高。以安卓/IOS端为例,每一次发布移动端应用,需要将应用上传到阿里云上,获取对应的安全SDK。


    安卓接入
  2. 配置过多,不便于管理。对于不同类型的应用、验证方式需要单独申请配置,且需要单独接入。若客户端更改验证方式后,需要单独申请配置和重新接入。

  3. 文档不准确。文档中,除了部分参数不正确外,最严重的错误是服务端API地址是错误的。

优点

  1. 客服响应及时。提交工单可以快速相应,联系专员可以迅速解决问题。

  2. 文档略好于腾讯云。

  3. 资费便宜。

总结

与极验等其他家验证码服务厂商相比,阿里云盾并不能算上一个合格的商用验证码服务。阿里云盾的客户端接入方式较为复杂且客户端接入成本过高。文档有些许错误且不全。因此,不推荐大家在生产环境中使用。

相关系列文章

参考文档

上一篇下一篇

猜你喜欢

热点阅读