多因素令牌是一款基于时间同步技术的双因子身份认证产品,当用户在使用登录、交易、关键信息变更等操作时,可通过接入多因素令牌让用户在操作前进行二次身份验证,保证操作的真实有效。
用户可通过获取到的二维码扫码验证,仅限与接入方网站有过绑定关系的多因素账号,如未绑定,网站方应引导用户先进行绑定。该二维码地址五分钟后失效,需重新获取。
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" ) 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' ] |
示例代码:
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); } } } |