账户权限管理服务 JAccount

简介

JAccount 是通用的用户权限管理服务,可以用于记录应用的用户和权限信息等基础数据,简化应用设计,为其提供通用化的解决方案。

应用场景

基础用户权限数据库

JAccount 是基础用户权限数据库,用于记录如数据门户、风控信息平台 AskMe 和汇信等应用的用户权限信息基础服务。

应用案例

_images/jaccount-apply.png

常见问题

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));
}