电话咨询

021-3332 8652

QQ在线咨询

扫一扫

关注公众号

安全服务申请

多因素令牌

多因素令牌是一款基于时间同步技术的双因子身份认证产品,当用户在使用登录、交易、关键信息变更等操作时,可通过接入多因素令牌让用户在操作前进行二次身份验证,保证操作的真实有效。

● 扫码登陆

网站用户使用多因素令牌(或其他支持扫码功能的App), 扫描网站显示的授权二维码, 即可完成身份验证, 从此告别难记的各种账户密码.

获取验证二维码

用户可通过获取到的二维码扫码验证,仅限与接入方网站有过绑定关系的多因素账号,如未绑定,网站方应引导用户先进行绑定。该二维码地址五分钟后失效,需重新获取。

  • - URL

  • https://api.duoyinsu.com/v1/qrcode_for_auth

  • - 请求方式

  • GET

  • - 参数说明

  • 参数 类型 必选 说明
    app_id String 应用 id,一个32字节字符串,用于在安识唯一标识每一个集成多因素令牌服务的App。
    auth_type Int 验证类型,这里auth_type=2,代表扫码登陆类型.
    signature String 签名,一个32字节字符串,用于确保客户端与api之间交互数据的完整性。

  • - 签名格式

  • md5(app_id+auth_type+appkey)

  • - 返回值

  • 返回值 类型 说明
    status Int 状态码,一个表示调用结果的数字。
    event_id String 用于获取事件结果的事件 ID,用来唯一标识一个特定的扫码事件。你可以将 event_id 传递给 /v1/event_result 来获得扫码结果。
    qrcode_url String 二维码图片URL。
    qrcode_data String 二维码图片的字符串内容,便于开发者自定义二维码图片。
    description String 接口调用返回码描述.

  • - 状态码描述

  • 状态码 说明
    200 请求成功!
    500 多因素内部错误!
    403 签名错误!
    604 用户或event_id不存在!

  • - 调用&返回示例

  • 单击查看
    {"event_id": "1467614532.77wsYFZ9Z", "status": 200, "qrcode_url": "https://api.duoyinsu.com/v1/show/qrcode_url/?uuid=706f5ecc-41b2-11e6-8b78-66b476a7be0a", "description": "success", "qrcode_data": "https://api.duoyinsu.com/v1/verify/?token=dd8450686d9a46bc22057a52be2a4cec"}
                                

获取验证结果

查看event_id所对应的事件响应结果, 此操作为异步获取用户扫码所产生的响应, 直至返回超时不可用,该event_id有效期为5分钟。

  • - URL

  • https://api.duoyinsu.com/v1/event_result

  • - 请求方式

  • GET

  • - 参数说明

  • 参数 类型 必选 说明
    app_id String 应用 id,一个32字节字符串,用于在安识唯一标识每一个集成多因素令牌服务的App.
    event_id String 事件ID, 用来标识某个多因素认证事件.
    signature String 签名,一个32字节字符串,用于确保多因素客户端与api之间交互数据的完整性。

  • - 签名格式

  • md5(app_id+event_id+appkey)

  • - 返回值

  • 返回值 类型 说明
    status Int 状态码,一个表示调用结果的数字。
    event_id String 用于获取事件结果的事件 ID,用来唯一标识一个特定的扫码事件。你可以将 event_id 传递给 /v1/event_result 来获得扫码结果。
    description String 接口调用返回码描述.

  • - 状态码描述

  • 状态码 说明
    200 请求成功!
    500 多因素内部错误!
    403 签名错误!
    604 用户或event_id不存在!

  • - 调用&返回示例

  • 单击查看
    {"description":"请求成功","event_id":"1466133229.08MfLdou0","signature":"3db662516cf894c96dd0e3ce16b5f3ef","status":200}
                                

获取验证结果

查看event_id所对应的事件响应结果, 此操作为异步获取用户扫码所产生的响应, 直至返回超时不可用,该event_id有效期为5分钟。

  • - URL

  • https://api.duoyinsu.com/v1/event_result

  • - 请求方式

  • GET

  • - 参数说明

  • 参数 类型 必选 说明
    app_id String 应用 id,一个32字节字符串,用于在安识唯一标识每一个集成多因素令牌服务的App.
    event_id String 事件ID, 用来标识某个多因素认证事件.
    signature String 签名,一个32字节字符串,用于确保多因素客户端与api之间交互数据的完整性。

  • - 签名格式

  • md5(app_id+event_id+appkey)

  • - 返回值

  • 返回值 类型 说明
    status Int 状态码,一个表示调用结果的数字。
    event_id String 用于获取事件结果的事件 ID,用来唯一标识一个特定的扫码事件。你可以将 event_id 传递给 /v1/event_result 来获得扫码结果。
    description String 接口调用返回码描述.

  • - 状态码描述

  • 状态码 说明
    200 请求成功!
    500 多因素内部错误!
    403 签名错误!
    604 用户或event_id不存在!

  • - 调用&返回示例

  • 单击查看
    {"description":"请求成功","event_id":"1466133229.08MfLdou0","signature":"3db662516cf894c96dd0e3ce16b5f3ef","status":200}
                                

● 离线验证

离线验证即传统的双因子认证, 接入方通过用户提交的动态口令, 结合在多因素后台生成的应用信息, 即可使用该API来验证用户身份的合法性.

  • - URL

  • https://api.duoyinsu.com/v1/traditional

  • - 请求方式

  • GET

  • - 参数说明

  • 参数 类型 必选 说明
    appid String 应用 id,一个32字节字符串,用于在安识唯一标识每一个集成多因素令牌服务的App。
    uid String 用户 id,最长64字节字符串,用户在安识对应appid生成的唯一且固定的ID账号。
    dynamic_code Int 6 位动态码,用户输入的动态验证码。
    signature String 签名,一个32字节字符串,用于确保客户端与api之间交互数据的完整性。

  • - 签名格式

  • md5(appid+dynamic_code+userid+appkey)

  • - 返回值

  • 返回值 类型 说明
    codetype Int 状态码,一个表示调用结果的数字。
    msg String 对codetype状态码含义的文字描述。

  • - 状态码描述

  • 状态码 说明
    200 授权成功。
    600 动态验证码错误。
    601 签名错误!
    604 用户不存在!

  • - 调用&返回示例

  • 单击查看
    {"codetype": 200, "msg": "授权成功."}


二维码绑定

帮助用户获取用于绑定账号的二维码图片URL。通过多因素令牌扫描该二维码,即可将生成动态口令所需信息绑定到APP中。

  • - URL

  • https://api.duoyinsu.com/v1/qrcode

  • - HTTP请求方式

  • GET

  • - 参数说明

  • 参数 类型 必选 说明
    appid String 应用 id,一个32字节字符串,用于在安识唯一标识每一个集成多因素令牌服务的App。
    uid String 用户 id,最长64字节字符串,用户在安识对应appid生成的唯一且固定的ID账号。
    signature String 签名,一个32字节字符串,用于确保客户端与api之间交互数据的完整性。

  • - 签名格式

  • md5(appid+dynamic_code+userid+appkey)

  • - 返回值

  • 返回值为一张二维码图片

  • - 状态码描述

  • 状态码 说明
    200 授权成功。
    601 签名错误!
    604 用户不存在!

  • - 调用&返回示例

  • 单击查看


SDK

目前提供了PHP、Java、Python几种开发语言的SDK,使开发者能够方便快捷的将双因素验证服务集成到自己的代码中去。


● PHP

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
include 'duoyinsu.class.php';  
  
# 使用您的凭据创建一个API对象 
$duoyinsu = new duoyinsu($app_id,$app_key,$auth_id); // (应用信息请登陆 多因素后台 生成)  
  
# Step 1 - 获取用户对应uid. 
$seed = 'username';  
$uid=$duoyinsu->getUid('$seed');   
$otp_code='864194'
  
# Step 2 - 验证动态口令有效性. 
$ret = $duoyinsu->traditional($uid,$otp_code);  
   
if "$ret" == "200" ) {  
    echo "Authentication is successful!\n";  
}else{  
    echo "$ret\n";  
}  

  • PHP SDK 下载
  • PHP 扫码登陆Demo


  • ● Python

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #coding:utf-8 
    from duoyinsu import duoyinsu
      
    # 使用您的凭据创建一个API对象 
    duoyinsuApi = duoyinsu("app_id","app_key","auth_id"// (应用信息请登陆 多因素后台 生成)  
      
    # Step 1 - 获取一个对应用户的二维码绑定地址. 
    r = duoyinsuApi.getQrcode("wangzhenfei")
    if r:
         print "Qrcode Bind Url: " + r
      
    # Step 2 - 检查二次口令是否能够认证通过. 
    r = duoyinsuApi.traditional('wangzhenfei''572100')
    if r['codetype'] == "200":
         print "Authorized Result: "+r['msg']
    else:
         print "Authorized Result: "+r['msg']
        

  • Python SDK 下载


  • ● Java

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import com.duoyinsu.util.DuoyinsuSubmit;
    public class Demo {
        public static void main(String[] args) {
             
            // 应用 id  一个32字节字符串  用于在安识唯一标识每一个集成多因素令牌服务的App
            String appid = "ZGQOTdiMDNkNGVmNDAxO";
            // 用户 key  用户在安识对应appid生成的唯一且固定的key
            String appkey = "TRjYzIxYIwOWYYT";
            // 用户 唯一授权id
            String auth_id = "xMzUyMIMUZGYYmV";
             
            DuoyinsuSubmit ds = new DuoyinsuSubmit(appid, auth_id, appkey);
             
            String seed = "username"// 用于生成uid的key,一般为登陆用户名
            String dynamic_code = "888666"// 动态口令
             
            // 获取用户 id
            String uid = ds.getUid(seed);
                     
            //traditional 验证授权
            String result  = ds.verifyAuthorization(uid, dynamic_code);
            if(result.equals("OK")){
                //获取绑定二维码
                String qrcodeUrl = ds.getQrcodeUrl(uid);
                System.out.println("[success] 检验成功! 您的二维码如下:" + qrcodeUrl);
                 
            }else{
                System.out.println("检验失败:" + result);
            }
             
        }
    }

  • Java SDK 下载