认证接口

2023-03-21 14:20 星期二

接口使用前的准备工作

在使用云信SDK之前需要在飞天云信IDaaS管理平台添加【认证API】,管理平台会分配【应用服务地址】、【应用标识】和【应用安全密钥】用于接口调用。因此,在集成云信SDK之前请务必先完成此步骤!

飞天云信IDaaS管理平台添加【认证API】方法如下:

管理员账号登录飞天云信IDaaS管理平台后,点击【应用管理】-【企业应用列表】-【添加应用】,打开添加应用界面,选择认证API,并且根据界面上的提示信息输入或选择对应的内容,点击【创建】按钮,认证API创建成功。

下列为云信SDK接口的说明。

接口签名说明

飞天云信IDaaS管理平台对外提供HTTPSRest方式的接口,所有的请求均采用POST方法。编码方式为UTF-8,消息体参数及返回结果为JSON格式。

注意:使用API前需要先获取apikey和apisecret。apikey用于标识访问的应用,apisecret用于传输数据时,对传输报文进行签名。

报文签名说明:

第一步:各接口中非空参数按照参数名ascii码从小到大排序,使用URL键值对的格式,拼接成待签名字符串,即

key1=value1&key2=value2&key3=value3

拼接成字符串。

假设发送的参数为:

{ apikey : 9A0A8659F005D6984697E2CA0A9CF3B7, timestamp :20181221162001, nonce : dpRxkhjbauiclpKoqt }

则待签名数据

apikey=9A0A8659F005D6984697E2CA0A9CF3B7&nonce=dpRxkhjbauiclpKoqt&timestamp=20181221162001

第二步: 使用apisecret作为签名密钥,对A进行签名,得到签名结果B

B=HmacSHA256(A, appsecret);

第三步:将B加入到参数列表中,得出最终发送的数据为:

{ apikey : 9A0A8659F005D6984697E2CA0A9CF3B7, timestamp :20181221162001, nonce : dpRxkhjbauiclpKoqt, sign:Base64(B) }

签名示例:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;


import com.alibaba.fastjson.JSON;



			   
public static void main(String[] args) {
	try{
		String appsecert = "<你的apisecret>";          				//应用apisecret
		Map<String,Object> data = new HashMap<String,Object>();			//待签名数据,请参照签名生成流程生成
		String sign = generateSignature(data, apisecert, "HMAC-SHA256");        //生成数据签名
		}catch(Exception e){
			e.printStackTrace();
		}
   }
 
 
public static String generateSignature(final Map<String,Object> data, String apisecret, String signType) // 签名生成方法
	throws Exception {
	Set keySet = data.keySet();
	String[] keyArray = (String[]) keySet.toArray(new String[keySet.size()]);
	Arrays.sort(keyArray);
	StringBuilder sb = new StringBuilder();
	for (String k : keyArray) {
		if (k.equals("sign")) {
			continue;
		}

		if (data.get(k) == null || "null".equals(data.get(k))) { 		// 参数值为空,则不参与签名
			data.remove(k);
			continue;
		}

		Object value = data.get(k);
		if (value instanceof Integer) {
			value = sb.append(k).append("=").append(value).append("&");
		} else {
			if (String.valueOf(value).trim().length() > 0) {
				sb.append(k).append("=").append(String.valueOf(value).trim()).append("&");
			}
		}
	}
	String sbr = sb.substring(0, sb.length() - 1);
	if ("MD5".equals(signType)) {
		java.security.MessageDigest md = MessageDigest.getInstance("MD5");
		byte[] array = md.digest(sbr.getBytes("UTF-8"));
		return Base64.getUrlEncoder().encodeToString(array);			// 16进制base64形式
	} else if ("HMAC-SHA256".equals(signType)) {
		Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
		SecretKeySpec secret_key = new SecretKeySpec(apisecret.getBytes("UTF-8"), "HmacSHA256");
		sha256_HMAC.init(secret_key);
		byte[] array = sha256_HMAC.doFinal(sbr.getBytes("UTF-8"));
		return Base64.getUrlEncoder().encodeToString(array); 			// 16进制base64形式
	}
	return null;
}

用户接口

1、检查用户是否存在

接口功能:判断用户是否已经存在。

https://serverurl/authcenterserver/api/sdk/user/v1/user_is_exist

参数说明:

参数说明
username用户名
apiKey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示存在,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。本请求示例:code={code}&msg={msg}&nonce={nonce}&username={username})

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]            

2、用户动态口令认证

接口功能:通过用户名的动态口令认证(可认证手机令牌和硬件令牌)。

https://serverurl/authcenterserver/api/sdk/otp/v1/user_otp_auth  

参数说明:

参数说明
username用户名
otp手机令牌或硬件令牌产生的动态口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
] 

手机令牌

1、检查是否已经激活手机令牌

接口功能:检查用户是否已经激活手机令牌。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobile_token_is_actived

参数说明:

参数说明
username用户名
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示已激活,211表示未激活,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"用户未激活手机令牌",
        "code":211,
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]   

2、获取手机令牌激活数据

接口功能:调用此接口获取手机令牌激活二维码数据。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobile_token_get_activedata

参数说明:

参数说明
username用户名
type激活数据类型,预留参数,传空字符串或null均可
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
activecode:激活码,使用此数据生成二维码供手机云信令激活手机令牌;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "activecode":"cloud://r-zbXb4j88-7e8lFksmu5ddirriJAiKNWQiqje2UN03u5oE4ioClJc8weC6KOf1bu1k7QTzgUifpvGZ0
        N7ayEFrcRf3LSH1SjIbRlqp85XKxQ1w_MB5Gja3l9uioe1bvGu0_wrYKjrtMHFLbpVkA0RqNHhHadI4P5_6RA-MihwKzMFotZZfH8q
        k4PxEu4vTiW8OMGg46PXJ76GAVkcWDBAKiUDTDNgdHvPOZPiNl7C5NzrCbpNFSx_4BrH1WwrsQApvMeanT1ub7IosDsjBafynSAQ1B
        _AE5sPv-iZcYXKm5Cl1xwiXa4HI8nZ6U8UxtG2Jx5WBKGbkoMsf5nNPqVG6ukF6B41xNy4JgmYuHRl3tFy0WqXFO_PlGQzVTO2-Fyn
        5N-YO5NSAw410LvRZk4A/I6kpIssHbQxuZCFGD6wp8Coc-K50BHHV0HrGz27B7bw",
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]            

3、OTP认证(标准双因素)

接口功能:使用手机云信令产生的口令进行OTP认证。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobile_token_user_otp_auth

参数说明:

参数说明
username用户名
otp手机云信令产生的口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"动态口令验证失败",
        "code":401,
        "username":"testUser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]       

4、推送认证

接口功能:将认证请求推送到手机云信令,使用此功能需要打开手机云信令进行认证操作。调用完此接口后需要立即调用“获取手机令牌推送/扫码认证结果”接口进行认证结果获取。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobiletokenpushauth

参数说明:

参数说明
username用户名
appName集成认证接口应用系统的名称
clientIp集成认证接口应用系统的用户的访问IP(用于在手机云信令中显示认证者IP)
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
reqid:请求id,用于后续“获取手机令牌推送/扫码认证结果”接口使用;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"认证处理中",
        "code":422,
        "reqid":"p10z0i01iad",
        "username":"testUser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]          

5、获取认证二维码

接口功能:扫描认证时,获取生成二维码的数据。调用完此接口后需要立即调用“获取手机令牌推送/扫码认证结果”接口进行认证结果获取。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobile_token_get_auth_qrcode    

参数说明:

参数说明
appName集成认证接口应用系统的名称
clientIp集成认证接口应用系统的用户的访问IP(用于在手机云信令中显示认证者IP)
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
qrcodedata:认证二维码数据,使用此数据生成二维码供手机云信令扫码认证;
reqid:请求id,用于后续“获取手机令牌扫码认证结果”接口使用;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "qrcodedata":"cloud://pnrxdlSw1LBxxptpV1dDWq_KbcwXXk2h4_3SZrPFWQRP3FPh_OmeG1OdwpWI0VBXF3uW6vgTOL0YeV79qsK4iTWGA9xp77P07W--JCrgY3M/yaN00W9jZ7SUb-R4_b-DCDY-Cjgv69A79h0ygFEQI2s",
        "reqid":"91898e62-29c5-46d8-9775-6a745bd8f67f",
        "nonce":"testnonce",
        "sign":"testsign"
            }
]        

6、获取手机令牌推送/扫码认证结果

接口功能:产生扫描认证二维码或推送认证后,调用此接口获取用户认证响应的结果。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobile_token_query_auth_result         

参数说明:

参数说明
reqid请求唯一标识,由”获取认证二维码”接口返回
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,422表示仍等待客户进行响应,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取username用户响应后返回的用户名,如需获取,可通过getJsonValue(“属性名”)获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
            "msg":"认证处理中",
            "code":422,
            "username":"testuser",
            "nonce":"testnonce",
            "sign":"testsign"
        }
]          

* 调用补充说明:

当code返回码返回422时,说明用户暂未响应,可再次间隔指定时间轮询调用此接口进行获取,可轮询指定次数。

调用示例:

7、解绑令牌

接口功能:解除用户和手机令牌的绑定关系。

https://serverurl/authcenterserver/api/sdk/mobileotp/v1/mobile_token_unbind                        

参数说明:

参数说明
username用户名
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]        

UAF 令牌

1、检查是否已经激活UAF令牌

接口功能:检查用户是否已经激活uaf令牌。

https://serverurl/authcenterserver/api/sdk/uaf/v1/uaf_is_actived

参数说明:

参数说明
username用户名
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示已激活,218表示未激活,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
            "msg":"用户未激活UAF令牌",
            "code":218,
            "username":"testuser",
            "nonce":"testnonce",
            "sign":"testsign"
        }
]           

2、获取UAF令牌激活数据

接口功能:调用此接口获取UAF令牌激活二维码数据。

https://serverurl/authcenterserver/api/sdk/uaf/v1/uaf_get_activedata        

参数说明:

参数说明
username用户名
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
activecode:激活码,使用此数据生成二维码供手机云信令激活UAF令牌;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "activecode":"cloud://r-zbXb4j88-7e8lFksmu5ddirriJAiKNWQiqje2UN03u5oE4ioClJc8weC6KOf1
            bu1k7QTzgUifpvGZ0N7ayEFrcRf3LSH1SjIbRlqp85XKxQ1w_MB5Gja3l9uioe1bvGu0_wrYKjrtMHFLb
            pVkA0RqNHhHadI4P5_6RA-MihwKzMFotZZfH8qk4PxEu4vTiW8OMGg46PXJ76GAVkcWDBAKiUDTDNgdHv
            POZPiNl7C5NzrCbpNFSx_4BrH1WwrsQApvMeanT1ub7IosDsjBafynSAQ1B_AE5sPv-iZcYXKm5Cl1xwi
            Xa4HI8nZ6U8UxtG2Jx5WBKGbkoMsf5nNPqVG6ukF6B41xNy4JgmYuHRl3tFy0WqXFO_PlGQzVTO2-Fyn5
            N-YO5NSAw410LvRZk4A/I6kpIssHbQxuZCFGD6wp8Coc-K50BHHV0HrGz27B7bw",
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
         }
]          

3、推送认证

接口功能:将UAF认证请求推送到手机云信令,使用此功能需要打开手机云信令进行认证操作。调用完此接口后需要立即调用“获取UAF令牌推送/扫码认证结果”接口进行认证结果获取。

https://serverurl/authcenterserver/api/sdk/uaf/v1/uaf_push_auth      

参数说明:

参数说明
username用户名
appName集成认证接口应用系统的名称
clientIp集成认证接口应用系统的用户的访问IP(用于在手机云信令中显示认证者IP)
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
reqid:请求id,用于后续“获取UAF令牌推送/扫码认证结果”接口使用;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"认证处理中",
        "code":422,
        "reqid":"p10z0i01iad",
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]         

4、获取认证二维码

接口功能:扫描认证时,获取生成二维码的数据。调用完此接口后需要立即调用“获取UAF令牌推送/扫码认证结果”接口进行认证结果获取。

https://serverurl/authcenterserver/api/sdk/uaf/v1/uaf_get_auth_qrcode         

参数说明:

参数说明
appName集成认证接口应用系统的名称
clientIp集成认证接口应用系统的用户的访问IP(用于在手机云信令中显示认证者IP)
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
qrcodedata:认证二维码数据,使用此数据生成二维码供手机云信令扫码认证;
reqid:请求id,用于后续“获取UAF令牌扫码认证结果”接口使用;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "qrcodedata":"cloud://pnrxdlSw1LBxxptpV1dDWq_KbcwXXk2h4_3SZrPFWQRP3FPh_OmeG1OdwpWI0VBXF3uW6vgTOL0YeV79qsK4iTWGA9xp77P07W--JCrgY3M/yaN00W9jZ7SUb-R4_b-DCDY-Cjgv69A79h0ygFEQI2s",
        "reqid":"91898e62-29c5-46d8-9775-6a745bd8f67f",
        "nonce":"testnonce",
        "sign":"testsign"
          }
]              

5、获取UAF令牌推送/扫码认证结果

接口功能:产生扫描认证二维码或推送认证后,调用此接口获取用户认证响应的结果。

https://serverurl/authcenterserver/api/sdk/uaf/v1/uaf_query_auth_result       

参数说明:

参数说明
reqid请求唯一标识,由”获取认证二维码”接口返回
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,422表示仍等待客户进行响应,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户响应后返回的用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
         "msg":"认证处理中",
         "code":422,
         "username":"testuser",
         "nonce":"testnonce",
         "sign":"testsign"
    }
]             

* 调用补充说明:

当code返回码返回422时,说明用户暂未响应,可再次间隔指定时间轮询调用此接口进行获取,可轮询指定次数。

调用示例:

6、解绑令牌

接口功能:解除用户和UAF令牌的绑定关系。

https://serverurl/authcenterserver/api/sdk/uaf/v1/uaf_unbind         

参数说明:

参数说明
username用户名
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
            "msg":"成功",
            "code":0,
            "username":"testUser",
           "nonce":"testnonce",
            "sign":"testsign"
        }
]           

硬件令牌

1、绑定硬件令牌

接口功能:将用户和硬件令牌进行绑定。

https://serverurl/authcenterserver/api/sdk/hardotp/v1/hard_token_bind           

参数说明:

参数说明
username用户名
token令牌号
otp动态口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示已激活,211表示未激活,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]              

2、解绑硬件令牌

接口功能:将用户和硬件令牌进行解绑。

https://serverurl/authcenterserver/api/sdk/hardotp/v1/hard_token_unbind           

参数说明:

参数说明
username用户名
token令牌号
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示已激活,211表示未激活,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "username":"testuser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]           

3、硬件令牌用户名认证

接口功能:使用用户名和硬件令牌产生的口令进行动态口令认证。

https://serverurl hardTokenUserOtpAuth(String username, String otp);          

参数说明:

参数说明
username用户名
otp硬件令牌产生的口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"动态口令验证失败",
        "code":401,
        "username":"testUser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]              

4、硬件令牌令牌号认证

接口功能:使用令牌号和硬件令牌产生的口令进行动态口令认证。

https://serverurl hardTokenTokensnOtpAuth(String token, String otp);           

参数说明:

参数说明
token令牌号
otp硬件令牌产生的口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"动态口令验证失败",
        "code":401,
        "nonce":"testnonce",
        "sign":"testsign"
    }
]         

5、硬件令牌用户名同步

接口功能:使用用户名和硬件令牌产生的口令与服务器进行令牌数据同步。

https://serverurl/authcenterserver/api/sdk/hardotp/v1/hard_token_user_otp_sync            

参数说明:

参数说明
username用户名
otp硬件令牌产生的口令
nextOtp硬件令牌产生下一个口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "username":"testUser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]             

6、硬件令牌令牌号同步

接口功能:使用令牌号和硬件令牌产生的口令与服务器进行令牌数据同步。

https://serverurl/hardTokenTokensnOtpSync(String token, String otp, String nextOtp);           

参数说明:

参数说明
token令牌号
otp硬件令牌产生的口令
nextOtp硬件令牌产生下一个口令
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
        stateCode=0, 
        stateMsg=操作成功, 
        data={
            "msg":"成功",
            "code":0,
            "nonce":"testnonce",
            "sign":"testsign"
        }
]             

7、硬件令牌启用

接口功能:通过传入令牌号将硬件令牌置为启用状态。

https://serverurl/authcenterserver/api/sdk/hardotp/v1/hard_token_enable                             

参数说明:

参数说明
token令牌号
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "nonce":"testnonce",
        "sign":"testsign"
    }
]              

8、硬件令牌禁用

接口功能:通过传入令牌号将硬件令牌置为禁用状态。

https://serverurl/authcenterserver/api/sdk/hardotp/v1/hard_token_disable             

参数说明:

参数说明
token令牌号
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表。
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
        "nonce":"testnonce",
        "sign":"testsign"
    }
]              

9、获取已绑定的硬件令牌号列表

接口功能:通过传入用户名获取已绑定的硬件令牌号列表。

https://serverurl/authcenterserver/api/sdk/hardotp/v1/hard_token_list             

参数说明:

参数说明
username用户名
apikey认证API key
timestamp时间戳,格式yyyyMMddHHmmss
nonce随机字符串,长度不超过32位
sign请求参数的签名,签名生成方式详见“报文签名说明”

返回结果说明:

属性名说明
stateCodeapi响应状态返回码,0表示成功,其它值参见状态码列表。
stateMsg状态描述
data业务数据,此数据为json格式数据,以下为此接口返回数据说明:
code:返回码,0表示成功,其它返回码参见返回码列表。此数据可直接通过api对象的getCode()方法获取;
msg:返回描述信息,此数据可直接通过api对象的getMsg()方法获取;
username:用户名,如需获取,可通过getJsonValue(“属性名”)获取;
tokens:令牌号列表,数据格式为json数组,如:[“令牌号1”, “令牌号2”];
nonce:请求时的nonce,原样带回;
sign:请求参数的签名 ,签名生成方式详见“报文签名说明”。
(注:代签名参数只包含data部分,不包含外层属性。)

返回示例:

ResponseData [
    stateCode=0, 
    stateMsg=操作成功, 
    data={
        "msg":"成功",
        "code":0,
       "tokens":["令牌号1", "令牌号2"],
        "username":"testUser",
        "nonce":"testnonce",
        "sign":"testsign"
    }
]             

API接口调用状态返回码

返回码说明
0业务成功响应
1请求数据格式错误(需要JSON格式)
2请求数据格式错误(JWT数据错误)
6签名验证未通过
7时间戳验证未通过
9认证API不存在
10认证API已锁定
11认证API未启用
13API所在企业未审核通过
14API所在企业已锁定
15API所在企业已禁用
19参数错误,缺少必填参数
100响应状态异常

API接口业务处理返回码

返回码说明
0业务成功
1参数错误
2失败
201用户不存在
202用户未启用
203用户已锁定
204用户未绑定令牌
208手机令牌激活码生成失败
211用户未激活手机令牌
218用户未激活UAF令牌
301令牌不存在
302令牌未启用
303令牌已锁定
305该令牌在此企业不存在
306解密令牌数据失败
401动态口令验证失败
402动态口令重放
403令牌需要同步
404无效认证策略
405认证策略允许通过
406认证策略拒绝通过
407不支持此认证类型
411认证策略需要双因素认证
412推送认证拒绝通过
413业务响应超时
414没有可推送的手机令牌
415没有可推送的终端
416扫码认证失败
417扫码用户不匹配
418扫码认证请求已过期
421没有可同步的令牌类型
422认证处理中
423云信令客户端参数错误
424客户端令牌己删除
426无效认证策略
427不支持此设备类型
433推送太频繁
437推送和响应用户不匹配
441企业不存在或为不可用状态
442认证API状态不可用
423云信令客户端参数错误
424客户端令牌己删除
426无效认证策略
427不支持此设备类型
433推送太频繁
437推送和响应用户不匹配
441企业不存在或为不可用状态
467位置上送已超时
468没有位置上送结果
469设备已停用
470不支持此认证类型
2001接口验证失败数过多,请稍后再试
2002get接口请求次数超限,请稍后再试
2003check接口请求次数超限,请稍后再试
2004verify请求次数超限