多因素令牌是一款基于时间同步技术的双因子身份认证产品,当用户在使用登录、交易、关键信息变更等操作时,可通过接入多因素令牌让用户在操作前进行二次身份验证,保证操作的真实有效。
用户可通过获取到的二维码扫码验证,仅限与接入方网站有过绑定关系的多因素账号,如未绑定,网站方应引导用户先进行绑定。该二维码地址五分钟后失效,需重新获取。
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分钟。
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来验证用户身份的合法性.
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中。
https://api.duoyinsu.com/v1/qrcode
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 | 用户不存在! | 
示例代码:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | include 'duoyinsu.class.php';   # 使用您的凭据创建一个API对象  # 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";  }   | 
示例代码:
| 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对象  # Step 1 - 获取一个对应用户的二维码绑定地址. r = duoyinsuApi.getQrcode("wangzhenfei")ifr:     print "Qrcode Bind Url: "+ r # Step 2 - 检查二次口令是否能够认证通过. r = duoyinsuApi.traditional('wangzhenfei', '572100')ifr['codetype'] == "200":     print "Authorized Result: "+r['msg']else:     print "Authorized Result: "+r['msg']    | 
示例代码:
| 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 | importcom.duoyinsu.util.DuoyinsuSubmit;publicclassDemo {    publicstaticvoidmain(String[] args) {                // 应用 id  一个32字节字符串  用于在安识唯一标识每一个集成多因素令牌服务的App        String appid = "ZGQOTdiMDNkNGVmNDAxO";        // 用户 key  用户在安识对应appid生成的唯一且固定的key        String appkey = "TRjYzIxYIwOWYYT";        // 用户 唯一授权id        String auth_id = "xMzUyMIMUZGYYmV";                DuoyinsuSubmit ds = newDuoyinsuSubmit(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);        }            }} |