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