账户权限管理服务 JAccount¶
简介¶
JAccount 是通用的用户权限管理服务,可以用于记录应用的用户和权限信息等基础数据,简化应用设计,为其提供通用化的解决方案。
应用场景¶
基础用户权限数据库¶
JAccount 是基础用户权限数据库,用于记录如数据门户、风控信息平台 AskMe 和汇信等应用的用户权限信息基础服务。
应用案例

常见问题¶
API 文档¶
请求地址¶
测试地址:http://192.168.16.158:10010
联调地址:http://192.168.16.248:10010
生产地址(阿里云):https://jua.cloudpnr.com
生产地址(普天):http://10.99.1.4
公共参数¶
所有接口均包含公共参数,为减少冗余,单独提出。
公共请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
app_token |
String |
是 |
变长 40 位 |
Jarvis 分配的 app_token |
signature |
String |
是 |
定长 64位 |
明文拼接规则:请求方法方式(大写) + app_token + 请求参数(请求参数需要按 ASCII 字符排序依次拼接)。明文加签规则:见章节“API签名” |
公共响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
response_code |
String |
是 |
变长 10 位 |
错误代码 |
response_message |
String |
是 |
变长 32 位 |
错误描述 |
公共失败响应
所有接口通用 RESTful 返回码,为减少冗余,单独提出。
状态码 |
描述 |
状态说明 |
---|---|---|
200 |
OK |
服务器成功返回用户请求的数据,通常出现在 GET 操作中 |
201 |
Created |
服务器成功创建用户请求的纪录,通常出现在 POST/PUT/PATCH 操作中 |
400 |
Bad Request |
用户发起的请求有错误,参数不符合 API 规则 |
401 |
Unauthorized Access |
用户没有权限,通常出现在登录失败或者 token、App-Token 错误的情况 |
403 |
Forbidden |
用户登录成功,但是没有该操作的权限 |
404 |
Not Found |
用户发出的请求不存在,该响应可能是请求的记录/页面不存在,具体参考详细的错误码 |
405 |
Method Not Allowed |
用户请求的地址不允许访问,该响应可能是请求的记录/页面不存在,或者请求方法错误,具体参考详细的错误码 |
5xx |
Internal Server Error |
服务器内部错误,出现该错误的几率很低,但如果出现该错误说明 Jarvis 服务器目前不可用 |
Jarvis 系统通用返回码:
状态码 |
描述 |
状态说明 |
---|---|---|
90000 |
Success |
成功 |
90100 |
Invalid parameters |
参数不符合规则 |
90101 |
Invalid User Information |
无效的用户信息 |
JAccount 返回码定义:
JAccount 返回码为 5 位数字组成,结构为 3 位接口编号 +2 位错误码,其中错误码
00~09
表示接口调用成功,10~99
表示接口调用失败。
JAccount 通用错误码定义: 1X
表示通用失败,2X
表示新增信息失败,3X
表示修改信息失败,4X~8X
预留业务失败,99
表示系统异常。
具体定义如下:
状态码 |
描述 |
状态说明 |
---|---|---|
10 |
未知失败 |
未定义的业务失败,返回信息中带出失败原因 |
11 |
查询结果无数据 |
查询结果无数据 |
20 |
新增信息唯一标识已存在 |
各类新增接口的信息唯一标识已存在,新增失败 |
30 |
修改信息唯一标识不存在 |
各类修改接口的信息唯一标识不存在,修改失败 |
99 |
系统异常 |
系统异常,返回信息提示系统异常,不返回失败原因 |
权限录入¶
调用 JAccount 权限录入接口,保存权限信息。
HTTP Request
v1.0.1
POST http://192.168.16.158:10010/account/v1.0.1/auths/{AUTH_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
auth_name |
String |
是 |
变长 32 位 |
权限名称 |
auth_desc |
String |
否 |
变长 64 位 |
权限描述 |
auth_state |
String |
是 |
定长 1 位 |
权限状态;0:NOK;1:OK |
auth_type |
String |
否 |
变长 8 位 |
权限类型,由调用方自行定义 |
auth_level |
String |
否 |
变长 2 位 |
权限等级,自然数 |
parent_auth_id |
String |
否 |
变长 16 位 |
父权限标识,父级权限的 auth_id |
sub_auth_flag |
String |
否 |
定长 1 位 |
子权限标志,是否有子权限;0:否;1:是 |
响应参数
仅公共响应参数。
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10010 |
权限标识已存在 |
权限标识已存在 |
10021 |
父级权限不存在 |
父级权限不存在 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X POST \
-F "app_token=APP_TOKEN" \
-F "auth_name=efg" \
-F "auth_desc=eeffgg" \
-F "auth_state=1" \
-F "auth_level=1" \
-F "sub_auth_flag=1" \
-F "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/auths/05251651
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("auth_name", "efg"));
params.add(new BasicNameValuePair("auth_desc", "eeffgg"));
params.add(new BasicNameValuePair("auth_state", "1"));
params.add(new BasicNameValuePair("auth_level", "0"));
params.add(new BasicNameValuePair("sub_auth_flag", "1"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/auths/05251651" ;
System.out.println(url);
// 生成请求对象
HttpPost httpPost = new HttpPost(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPost.setConfig(config);
// 设置参数
httpPost.setEntity(urlEncodedFormEntity);
// 设置user,传用户token,非必须
httpPost.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPost);
// 解析响应...
成功响应
201
{
"response_code":"90000",
"response_message":"成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限修改¶
调用 JAccount 权限修改接口,修改权限信息。
HTTP Request
v1.0.1
PUT http://192.168.16.158:10010/account/v1.0.1/auths/{AUTH_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
auth_name |
String |
否 |
变长 32 位 |
权限名称 |
auth_desc |
String |
否 |
变长 64 位 |
权限描述 |
auth_state |
String |
否 |
定长 1 位 |
权限状态;0:NOK;1:OK |
auth_type |
String |
否 |
变长 8 位 |
权限类型,由调用方自行定义 |
auth_level |
String |
否 |
变长 2 位 |
权限等级,自然数 |
parent_auth_id |
String |
否 |
变长 16 位 |
父权限标识,父级权限的 auth_id |
sub_auth_flag |
String |
否 |
定长 1 位 |
子权限标志,是否有子权限;0:否;1:是 |
响应参数
仅公共响应参数。
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10130 |
权限标识不存在 |
权限标识不存在 |
10131 |
父级权限不存在 |
父级权限不存在 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X PUT \
-d "app_token=APP_TOKEN" \
-d "auth_name=efg" \
-d "auth_desc=eeffgg" \
-d "auth_state=1" \
-d "auth_level=1" \
-d "sub_auth_flag=1" \
-d "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/auths/05251651
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("auth_name", "efg"));
params.add(new BasicNameValuePair("auth_desc", "eeffgg"));
params.add(new BasicNameValuePair("auth_state", "1"));
params.add(new BasicNameValuePair("auth_level", "0"));
params.add(new BasicNameValuePair("sub_auth_flag", "0"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/auths/05251651";
System.out.println(url);
// 生成请求对象
HttpPut httpPut = new HttpPut(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPut.setConfig(config);
// 设置参数
httpPut.setEntity(urlEncodedFormEntity);
// 设置user,传用户token,非必须
httpPut.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPut);
// 解析响应...
成功响应
201
{
"response_code":"90000",
"response_message":"成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限批量查询¶
提供权限批量查询功能。
HTTP Request
v1.0.1
GET http://192.168.16.158:10010/account/v1.0.1/auths
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
auth_ids |
String |
否 |
变长 |
权限集合,以逗号分隔 |
auth_state |
String |
否 |
定长 1 位 |
权限状态;0:NOK;1:OK |
auth_type |
String |
否 |
变长 8 位 |
权限类型,由调用方自行定义 |
auth_level |
String |
否 |
变长 2 位 |
权限等级,自然数 |
parent_auth_id |
String |
否 |
变长 16 位 |
父权限标识,父级权限的 auth_id |
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
count |
String |
否 |
变长 |
满足查询条件结果记录总数,即当前查询返回记录数 |
list |
list |
否 |
无 |
权限信息集合 |
list:
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
auth_id |
String |
是 |
变长16位 |
权限标志 |
auth_name |
String |
是 |
变长 64 位 |
权限名称 |
auth_desc |
String |
否 |
变长 64 位 |
权限描述 |
auth_state |
String |
是 |
定长 1 位 |
权限状态;0:NOK;1:OK |
auth_type |
String |
否 |
变长 8 位 |
权限类型,由调用方自行定义 |
auth_level |
String |
否 |
变长 2 位 |
权限等级,自然数 |
parent_auth_id |
String |
否 |
变长 16 位 |
父权限标识,父级权限的 auth_id |
sub_auth_flag |
String |
否 |
定长 1 位 |
子权限标志,是否有子权限;0:否;1:是 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10201 |
查询成功,结果无数据 |
查询成功,结果无数据 |
调用示例
shell
curl --get --user eyJhbGciOiJIU_x1Mg
http://192.168.16.158:10010/account/v1.0.1/auths?app_token=APP_TOKEN&signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/auths?" + param;
System.out.println(url);
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpGet.setConfig(config);
// 设置user,传用户token,非必须
httpGet.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpGet);
// 解析响应...
成功响应
200
{
"list": [
{
"app_token": "111333",
"auth_desc": "aabbcc",
"auth_id": "05251555",
"auth_level": "0",
"auth_name": "abc",
"auth_seq_id": "1000000005",
"auth_state": "1",
"auth_type": null,
"create_time": "2017-05-25 16:20:58",
"parent_auth_id": "",
"sub_auth_flag": "0",
"update_time": "2017-05-25 16:20:58"
},
{
"app_token": "111333",
"auth_desc": "eeffgg",
"auth_id": "05251651",
"auth_level": "0",
"auth_name": "efg",
"auth_seq_id": "1000000006",
"auth_state": "1",
"auth_type": null,
"create_time": "2017-05-25 16:23:44",
"parent_auth_id": "",
"sub_auth_flag": "0",
"update_time": "2017-05-25 16:23:44"
},
{
"app_token": "111333",
"auth_desc": "eeffgg",
"auth_id": "05251653",
"auth_level": "0",
"auth_name": "efg",
"auth_seq_id": "1000000007",
"auth_state": "1",
"auth_type": null,
"create_time": "2017-06-01 17:47:49",
"parent_auth_id": "",
"sub_auth_flag": "0",
"update_time": "2017-06-01 17:47:49"
}
],
"count": "4",
"response_code": "90000",
"response_message": "成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限单笔查询¶
调用 JAccount 权限录入接口,保存权限信息。
HTTP Request
v1.0.1
GET http://192.168.16.158:10010/account/v1.0.1/auths/{AUTH_ID}
请求参数
仅公共响应参数。
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
auth_id |
String |
是 |
变长16位 |
权限标志 |
auth_name |
String |
是 |
变长 64 位 |
权限名称 |
auth_desc |
String |
否 |
变长 64 位 |
权限描述 |
auth_state |
String |
是 |
定长 1 位 |
权限状态;0:NOK;1:OK |
auth_type |
String |
否 |
变长 8 位 |
权限类型,由调用方自行定义 |
auth_level |
String |
否 |
变长 2 位 |
权限等级,自然数 |
parent_auth_id |
String |
否 |
变长 16 位 |
父权限标识,父级权限的 auth_id |
sub_auth_flag |
String |
否 |
定长 1 位 |
子权限标志,是否有子权限;0:否;1:是 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10301 |
查询成功,结果无数据 |
查询成功,结果无数据 |
调用示例
shell
curl --get --user eyJhbGciOiJIU_x1Mg http://192.168.16.158:10010/account/v1.0.1/auths/05251651?app_token=APP_TOKEN&auth_name=efg&auth_desc=eeffgg&auth_state=1&auth_level=0&sub_auth_flag=0&signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/auths/05251654?" + param;
System.out.println(url);
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpGet.setConfig(config);
// 设置user,传用户token
httpGet.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpGet);
// 解析响应...
成功响应
200
{
"response_code": "90000",
"response_message": "成功",
"auth_desc": "eeffgg",
"auth_id": "06050954",
"auth_level": "0",
"auth_name": "efg",
"auth_state": "1",
"auth_type": null,
"parent_auth_id": "",
"sub_auth_flag": "0"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限组录入¶
调用 JAccount 权限组录入接口,保存权限组信息。
HTTP Request
v1.0.1
POST http://192.168.16.158:10010/account/v1.0.1/authgroups/{GROUP_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
group_name |
String |
是 |
变长 32 位 |
权限组名称 |
group_desc |
String |
否 |
变长 64 位 |
权限组描述 |
group_type |
String |
否 |
变长 32 位 |
权限组类型 |
group_state |
String |
是 |
定长 1 位 |
权限组状态 |
group_auths |
String |
是 |
变长 1,024 位 |
权限组权限集合,权限标识拼接,以逗号 |
响应参数
仅公共响应参数。
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10420 |
权限组标识已存在 |
权限组标识已存在 |
10422 |
权限信息不存在 |
权限信息不存在 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X POST \
-F "app_token=APP_TOKEN" \
-F "org_id=orgid" \
-F "group_name=efg" \
-F "group_desc=eeffgg" \
-F "group_state=1" \
-F "group_auths=05251555,05251651" \
-F "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/authgroups/06050954
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("org_id", "ordid"));
params.add(new BasicNameValuePair("group_name", "efg"));
params.add(new BasicNameValuePair("group_desc", "eeffgg"));
params.add(new BasicNameValuePair("group_state", "1"));
params.add(new BasicNameValuePair("group_auths", "05251555,05251651"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/authgroups/" + GROUP_ID;
System.out.println(url);
// 生成请求对象
HttpPost httpPost = new HttpPost(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPost.setConfig(config);
// 设置参数
httpPost.setEntity(urlEncodedFormEntity);
// 设置user,传用户token
httpPost.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPost);
// 解析响应...
成功响应
201
{
"response_code":"90000",
"response_message":"成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限组修改¶
调用 JAccount 权限组修改接口,修改权限组信息。
HTTP Request
v1.0.1
PUT http://192.168.16.158:10010/account/v1.0.1/authgroups/{GROUP_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
group_name |
String |
是 |
变长 32 位 |
权限组名称 |
group_desc |
String |
否 |
变长 64 位 |
权限组描述 |
group_type |
String |
否 |
变长 32 位 |
权限组类型 |
group_state |
String |
是 |
定长 1 位 |
权限组状态 |
group_auths |
String |
是 |
变长 1,024 位 |
权限组权限集合,权限标识拼接,以逗号 |
响应参数
仅公共响应参数。
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10530 |
权限组标识已存在 |
权限组标识已存在 |
10532 |
权限信息不存在 |
权限信息不存在 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X PUT \
-d "app_token=APP_TOKEN" \
-d "group_name=efg" \
-d "group_desc=eeffgg" \
-d "group_state=1" \
-d "group_auths=05251555,05251651" \
-d "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/authgroups/06050954
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("group_name", "efg"));
params.add(new BasicNameValuePair("group_desc", "eeffgg"));
params.add(new BasicNameValuePair("group_state", "1"));
params.add(new BasicNameValuePair("group_auths", "05251555,05251651"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/authgroups/" + GROUP_ID;
System.out.println(url);
// 生成请求对象
HttpPut httpPut = new HttpPut(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPut.setConfig(config);
// 设置参数
httpPut.setEntity(urlEncodedFormEntity);
// 设置user,传用户token,非必须
httpPut.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPut);
// 解析响应...
成功响应
201
{
"response_code":"90000",
"response_message":"成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限组批量查询¶
调用 JAccount 权限组批量查询接口,查询权限组信息。
HTTP Request
v1.0.1
GET http://192.168.16.158:10010/account/v1.0.1/authgroups
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
group_ids |
String |
否 |
变长 |
权限名称 |
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
count |
String |
否 |
变长 |
满足查询条件结果记录总数,即当前查询返回记录数,查询成功时必须 |
group_list |
list |
否 |
不定长 |
权限组列表,查询成功时必须 |
group_list:
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
group_id |
String |
是 |
变长 64 位 |
权限组标识 |
group_name |
String |
是 |
变长 64 位 |
权限组名称 |
group_desc |
String |
否 |
变长 64 位 |
权限组描述 |
group_type |
String |
否 |
变长 32 位 |
权限组类型 |
group_state |
String |
是 |
定长 1 位 |
权限组状态 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10611 |
查询成功,结果无数据 |
查询成功,结果无数据 |
调用示例
shell
curl --get --user eyJhbGciOiJIU_x1Mg
-F "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/authgroups?app_token=APP_TOKEN
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/authgroups?" + param;
System.out.println(url);
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpGet.setConfig(config);
// 设置user,传用户token,非必须
httpGet.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpGet);
// 解析响应...
成功响应
200
{
"group_list": [
{
"group_desc": "eeffgg",
"group_id": "06050954",
"group_name": "efg",
"group_state": "1",
"group_type": "1",
},
{
"group_desc": "eeffgg1",
"group_id": "06050955",
"group_name": "efg1",
"group_state": "1",
"group_type": "1",
}
],
"count": "2",
"response_code": "90000",
"response_message": "成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
权限组单笔查询¶
调用 JAccount 权限组录入接口,查询权限组明细信息。
HTTP Request
v1.0.1
GET http://192.168.16.158:10010/account/v1.0.1/authgroups/{GROUP_ID}
请求参数
仅包含公共请求参数。
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
group_id |
String |
是 |
变长 64 位 |
权限组标识 |
group_name |
String |
是 |
变长 64 位 |
权限组名称 |
group_desc |
String |
否 |
变长 64 位 |
权限组描述 |
group_type |
String |
否 |
变长 32 位 |
权限组类型 |
group_state |
String |
是 |
定长 1 位 |
权限组状态 |
group_auth_detail |
list |
是 |
定长 1 位 |
权限组权限明细 |
group_auth_detail:
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
auth_id |
String |
是 |
变长 16 位 |
权限标志 |
auth_name |
String |
是 |
变长 64 位 |
权限名称 |
auth_state |
String |
是 |
定长 1 位 |
权限状态;0:NOK;1:OK |
auth_type |
String |
否 |
变长 8 位 |
权限类型,由调用方自行定义 |
auth_level |
String |
否 |
变长 2 位 |
权限等级,自然数 |
parent_auth_id |
String |
否 |
变长 16 位 |
父权限标识,父级权限的 auth_id |
sub_auth_flag |
String |
否 |
定长 1 位 |
子权限标志,是否有子权限;0:否;1:是 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
10701 |
查询成功,结果无数据 |
查询成功,结果无数据 |
调用示例
shell
curl --get --user eyJhbGciOiJIU_x1Mg http://192.168.16.158:10010/account/v1.0.1/authgroups/05251651?app_token=APP_TOKEN&signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/authgroups/" + GROUP_ID + "?" + param;
System.out.println(url);
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpGet.setConfig(config);
// 设置user,传用户token,非必须
httpGet.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpGet);
// 解析响应...
成功响应
200
{
"group_auth_detail": [
{
"auth_id": "05251555",
"auth_level": "0",
"auth_name": "abc",
"auth_state": "1",
"auth_type": null,
"parent_auth_id": "",
"sub_auth_flag": "0"
},
{
"auth_id": "05251651",
"auth_level": "0",
"auth_name": "efg",
"auth_state": "1",
"auth_type": null,
"parent_auth_id": "",
"sub_auth_flag": "0"
}
],
"group_desc": "eeffgg",
"group_id": "06050954",
"group_name": "efg",
"group_state": "1",
"group_type": "1",
"response_code": "90000",
"response_message": "成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
用户注册¶
调用 JAccount 用户注册接口,注册用户信息。
HTTP Request
v1.0.1
POST http://192.168.16.158:10010/account/v1.0.1/users/{USER_LOGIN_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
org_id |
String |
否 |
变长 16 位 |
组织机构号 |
user_pwd |
String |
否 |
变长 64 位 |
登录密码 |
user_name |
String |
否 |
变长 64 位 |
用户名称 |
user_short_name |
String |
否 |
变长 32 位 |
用户简称 |
user_type |
String |
否 |
定长 1 位 |
用户类型 C:个人;B:企业 |
is_huifu_user |
String |
否 |
定长 1 位 |
是否域账户 0:普通账户; 1:域账户 |
cert_type |
String |
否 |
定长 2 位 |
证件类型 00:身份证;10:企业营业执照;11:社会统一信用代码 |
cert_id |
String |
否 |
变长 32 位 |
证件号码 |
cert_id_encrypt |
String |
否 |
变长 16 位 |
证件号码密文 |
user_mobile |
String |
否 |
变长 16 位 |
手机号码 |
user_mobile_encrypt |
String |
否 |
变长 16 位 |
手机号码密文 |
user_auths |
String |
否 |
变长 512 位 |
用户权限 |
user_auth_groups |
String |
否 |
变长 512 位 |
用户权限组 |
user_extends |
String |
否 |
变长 512 位 |
用户信息拓展 |
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
user_id |
String |
否 |
变长 16 位 |
用户唯一标识 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
20020 |
用户登录号已存在 |
用户登录号已存在 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X POST \
-F "user_pwd=APP_TOKEN" \
-F "user_name=fff" \
-F "cert_type=00" \
-F "cert_id=159593199802283637" \
-F "user_mobile=13579513579" \
-F "user_extends={\"ttt\":\"cccc\"}" \
-F "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/users/06050954
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("user_name", "fff"));
params.add(new BasicNameValuePair("cert_type", "00"));
params.add(new BasicNameValuePair("cert_id", "159593199802283637"));
params.add(new BasicNameValuePair("user_mobile", "13579513579"));
params.add(new BasicNameValuePair("user_extends", "{\"ttt\":\"cccc\"}"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/users/" + USER_LOGIN_ID;
System.out.println(url);
// 生成请求对象
HttpPost httpPost = new HttpPost(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPost.setConfig(config);
// 设置请求参数
httpPost.setEntity(urlEncodedFormEntity);
// 设置user,传用户token
httpPost.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPost);
// 解析响应...
成功响应
201
{
"response_code":"90000",
"response_message":"成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
用户修改¶
调用 JAccount 用户修改接口,修改用户信息。
HTTP Request
v1.0.1
PUT http://192.168.16.158:10010/account/v1.0.1/users/{USER_LOGIN_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
org_id |
String |
否 |
变长 16 位 |
组织机构号 |
user_pwd |
String |
否 |
变长 64 位 |
登录密码 |
user_name |
String |
否 |
变长 64 位 |
用户名称 |
user_short_name |
String |
否 |
变长 32 位 |
用户简称 |
user_type |
String |
否 |
定长 1 位 |
用户类型 C:个人;B:企业 |
cert_type |
String |
否 |
定长 2 位 |
证件类型 00:身份证;10:企业营业执照;11:社会统一信用代码 |
cert_id |
String |
否 |
变长 32 位 |
证件号码 |
cert_id_encrypt |
String |
否 |
变长 16 位 |
证件号码密文 |
user_mobile |
String |
否 |
变长 16 位 |
手机号码 |
user_mobile_encrypt |
String |
否 |
变长 16 位 |
手机号码密文 |
user_auths |
String |
否 |
变长 512 位 |
用户权限 |
user_auth_groups |
String |
否 |
变长 512 位 |
用户权限组 |
user_extends |
String |
否 |
变长 512 位 |
用户信息拓展 |
响应参数
仅公共响应参数。
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
20130 |
用户登录号不存在 |
用户登录号不存在 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X PUT \
-d "user_pwd=APP_TOKEN" \
-d "user_name=fff" \
-d "cert_type=00" \
-d "cert_id=159593199802283637" \
-d "user_mobile=13579513579" \
-d "user_extends={\"ttt\":\"cccc\"}" \
-d "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/users/06050954
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("auth_name", "efg"));
params.add(new BasicNameValuePair("auth_desc", "eeffgg"));
params.add(new BasicNameValuePair("auth_state", "1"));
params.add(new BasicNameValuePair("auth_level", "0"));
params.add(new BasicNameValuePair("sub_auth_flag", "0"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = https:///" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/auths/05251651?" + param;
System.out.println(url);
// 生成请求对象
HttpPost httpPost = new HttpPost(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPost.setConfig(config);
// 设置user,传用户token,非必须
httpPost.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPost);
// 解析响应...
成功响应
201
{
"response_code":"90000",
"response_message":"成功"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
用户批量查询¶
调用 JAccount 用户批量查询接口,批量查询用户信息。
HTTP Request
v1.0.1
GET http://192.168.16.158:10010/account/v1.0.1/users
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
page_number |
String |
是 |
变长 8 位 |
页码 |
page_size |
String |
是 |
变长 64 位 |
分页大小 |
user_login_ids |
String |
否 |
变长 |
用户登录标识集合,以逗号分隔 |
org_id |
String |
否 |
变长 16 位 |
组织机构号 |
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
count |
String |
否 |
变长 |
满足查询条件的记录总数(非当前页记录数) |
list |
List |
否 |
无 |
用户信息列表,查询成功时必须 |
list:
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
user_id |
String |
是 |
变长 16 位 |
组织机构号 |
user_login_id |
String |
否 |
变长 64 位 |
用户登录号 |
org_id |
String |
否 |
变长 16 位 |
组织机构号 |
user_name |
String |
否 |
变长 64 位 |
用户名称 |
user_short_name |
String |
否 |
变长 32 位 |
用户简称 |
user_type |
String |
否 |
定长 1 位 |
用户类型 C:个人;B:企业 |
cert_type |
String |
否 |
定长 2 位 |
证件类型 00:身份证;10:企业营业执照;11:社会统一信用代码 |
cert_id |
String |
否 |
变长 32 位 |
证件号码 |
cert_id_encrypt |
String |
否 |
变长 16 位 |
证件号码密文 |
user_mobile |
String |
否 |
变长 16 位 |
手机号码 |
user_mobile_encrypt |
String |
否 |
变长 16 位 |
手机号码密文 |
user_auths |
String |
否 |
变长 512 位 |
用户权限 |
user_auth_groups |
String |
否 |
变长 512 位 |
用户权限组 |
user_extends |
String |
否 |
变长 512 位 |
用户信息拓展 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
20201 |
查询成功,结果无数据 |
查询成功,结果无数据 |
调用示例
shell
curl --get --user eyJhbGciOiJIU_x1Mg http://192.168.16.158:10010/account/v1.0.1/users?app_token=APP_TOKEN&page_number=1&page_size=1&signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("page_number", "1"));
params.add(new BasicNameValuePair("page_size", "1"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/users?" + param;
System.out.println(url);
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpGet.setConfig(config);
// 设置user,传用户token,非必须
httpGet.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpGet);
// 解析响应...
成功响应
200
{
"count": "5",
"response_code": "90000",
"response_message": "成功",
"user_list": [
{
"cert_id": null,
"cert_id_encrypt": null,
"cert_type": null,
"org_id": null,
"user_auth_groups": null,
"user_auths": null,
"user_extends": "{\"ttt\":\"cccc\"}",
"user_id": "1000000040",
"user_login_id": "06050954",
"user_mobile": "13579513579",
"user_mobile_encrypt": null,
"user_name": "fff",
"user_pwd": null,
"user_short_name": null,
"user_type": "C"
}
]
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
用户单笔查询¶
调用 JAccount 用户单笔查询接口,查询用户信息。
HTTP Request
v1.0.1
GET http://192.168.16.158:10010/account/v1.0.1/users/{USER_LOGIN_ID}
请求参数
仅包含公共参数。
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
user_id |
String |
是 |
变长 16 位 |
组织机构号 |
user_login_id |
String |
是 |
变长 64 位 |
用户登录号 |
org_id |
String |
否 |
变长 16 位 |
组织机构号 |
user_pwd |
String |
否 |
变长 64 位 |
用户登录密码 |
user_name |
String |
否 |
变长 64 位 |
用户名称 |
user_short_name |
String |
否 |
变长 32 位 |
用户简称 |
user_type |
String |
否 |
定长 1 位 |
用户类型 C:个人;B:企业 |
cert_type |
String |
否 |
定长 2 位 |
证件类型 00:身份证;10:企业营业执照;11:社会统一信用代码 |
cert_id |
String |
否 |
变长 32 位 |
证件号码 |
cert_id_encrypt |
String |
否 |
变长 16 位 |
证件号码密文 |
user_mobile |
String |
否 |
变长 16 位 |
手机号码 |
user_mobile_encrypt |
String |
否 |
变长 16 位 |
手机号码密文 |
user_auths |
String |
否 |
变长 512 位 |
用户权限 |
user_auth_groups |
String |
否 |
变长 512 位 |
用户权限组 |
user_extends |
String |
否 |
变长 512 位 |
用户信息拓展 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
20301 |
查询成功,结果无数据 |
查询成功,结果无数据 |
调用示例
shell
curl --get --user eyJhbGciOiJIU_x1Mg http://192.168.16.158:10010/account/v1.0.1/users/05251651?app_token=APP_TOKEN&signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
String param = EntityUtils.toString(urlEncodedFormEntity);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/users/" + USER_LOGIN_ID + "?" + param;
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpGet.setConfig(config);
// 设置user,传用户token,非必须
httpGet.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpGet);
// 解析响应...
成功响应
200
{
"cert_id": null,
"cert_id_encrypt": null,
"cert_type": null,
"org_id": null,
"response_code": "90000",
"response_message": "成功",
"user_auth_groups": null,
"user_auths": null,
"user_extends": "{\"ttt\":\"cccc\"}",
"user_id": "1000000040",
"user_login_id": "06050954",
"user_mobile": "13579513579",
"user_mobile_encrypt": null,
"user_name": "fff",
"user_pwd": null,
"user_short_name": null,
"user_type": "C"
}
失败响应
400
{
"response_code":"90100",
"response_message":"参数错误"
}
用户登录¶
调用 JAcount 用户用户登录接口
HTTP Request
v1.0.1
POST http://192.168.16.158:10010/account/v1.0.1/users/login/{USER_LOGIN_ID}
请求参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
user_pwd_encrypt |
String |
是 |
变长 256 位 |
用户登录密码密文 |
响应参数
名称 |
类型 |
是否必须 |
限制 |
描述 |
---|---|---|---|---|
user_id |
String |
是 |
变长 16 位 |
组织机构号 |
user_login_id |
String |
是 |
变长 64 位 |
用户登录号 |
org_id |
String |
否 |
变长 16 位 |
组织机构号 |
user_pwd_encrypt |
String |
否 |
变长 256 位 |
用户登录密码密文 |
user_name |
String |
否 |
变长 64 位 |
用户名称 |
user_short_name |
String |
否 |
变长 32 位 |
用户简称 |
is_huifu_user |
String |
否 |
定长 1 位 |
是否域账户 0:普通账户; 1:域账户 |
user_type |
String |
否 |
定长 1 位 |
用户类型 C:个人;B:企业 |
cert_type |
String |
否 |
定长 2 位 |
证件类型 00:身份证;10:企业营业执照;11:社会统一信用代码 |
cert_id |
String |
否 |
变长 32 位 |
证件号码 |
cert_id_encrypt |
String |
否 |
变长 16 位 |
证件号码密文 |
user_mobile |
String |
否 |
变长 16 位 |
手机号码 |
user_mobile_encrypt |
String |
否 |
变长 16 位 |
手机号码密文 |
user_auths |
String |
否 |
变长 512 位 |
用户权限 |
user_auth_groups |
String |
否 |
变长 512 位 |
用户权限组 |
user_extends |
String |
否 |
变长 512 位 |
用户信息拓展 |
失败响应
状态码 |
描述 |
状态说明 |
---|---|---|
20441 |
登录验证失败 |
登录验证失败 |
20442 |
用户类型不正确 |
用户类型不正确 |
调用示例
shell
curl --user eyJhbGciOiJIU_x1Mg: \
-X POST \
-F "app_token=APP_TOKEN" \
-F "user_pwd_encrypt=BOTbGX+7IGnnws94WE4yLQ==" \
-F "signature=2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3" \
http://192.168.16.158:10010/account/v1.0.1/users/login/test
java
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
HttpClient httpClient = null;
HttpResponse response = null;
// 请求参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("app_token", "111333"));
params.add(new BasicNameValuePair("user_pwd_encrypt", aesEncryptToBase64("userpwd")));
params.add(new BasicNameValuePair("signature", "2d52ba35a7edc5506b248accf77c164e65da4b246f4b77c2964923f1caadf4e3"));
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
params, Consts.UTF_8);
// 拼接请求url
String url = "https://" + REMOTE_HOST + ":" + REMOTE_PORT + "/account/v1.0.1/users/login/test" ;
System.out.println(url);
// 生成请求对象
HttpPost httpPost = new HttpPost(url);
// 超时时间设置
RequestConfig config = RequestConfig.custom().setConnectTimeout(10000).setSocketTimeout(10000)
.setConnectionRequestTimeout(10000).build();
httpPost.setConfig(config);
// 设置参数
httpPost.setEntity(urlEncodedFormEntity);
// 设置user,传用户token,非必须
httpPost.addHeader("user", "20170525");
// 创建客户端
httpClient = HttpClientBuilder.create().build();
// 执行请求,获取相应
response = httpClient.execute(httpPost);
// 解析响应...
成功响应
200
{
"cert_id": null,
"cert_id_encrypt": null,
"cert_type": null,
"org_id": null,
"response_code": "90000",
"response_message": "成功",
"user_auth_groups": null,
"user_auths": null,
"user_extends": "{\"ttt\":\"cccc\"}",
"user_id": "1000006381",
"user_login_id": "test",
"user_mobile": "13579513579",
"user_mobile_encrypt": null,
"user_name": "fff",
"user_pwd": null,
"user_short_name": null,
"user_type": "C"
}
失败响应
400
{
"response_code":"90101",
"response_message":"用户信息无效"
}
注:请求参数 user_pwd_encrypt 调用方须使用 AES 加密后传入
AES 算法加密 Demo:
/**
*使用对称加密算法AES对明文串进行加密(默认使用UTF-8字符集编码)
*@param plainData 需要加密的明文串
*@param encryptKey 加密密钥
*@return 经过AES加密生成的通过Base64转换的字符串
***/
public static String aesEncryptToBase64(String plainData, String encryptKey) throws Exception {
byte[] cipherBytes = {};
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG", "SUN");
secureRandom.setSeed(encryptKey.getBytes());
kgen.init(128,secureRandom);
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES"));
cipherBytes = cipher.doFinal(plainData.getBytes("UTF-8"));
//加密后的结果进行Base64转换后存入
return new String(Base64.encodeBase64(cipherBytes));
}