美文网首页
图形验证码服务接入(四)阿里云盾接入

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

作者: youthcity | 来源:发表于2018-10-02 18:33 被阅读614次

    接入可参考项目工程: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. 资费便宜。

    总结

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

    相关系列文章

    参考文档

    相关文章

      网友评论

          本文标题:图形验证码服务接入(四)阿里云盾接入

          本文链接:https://www.haomeiwen.com/subject/kauhoftx.html