Authing 文档文档
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
快速开始
概念
使用指南
开发集成 V2 arrow
  • V2 文档
  • V3 文档
元数据
应用集成
身份自动化
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
旧版
开发集成
  • JavaScript SDK 索引
  • 单点登录(SSO)
  • 登录组件 (Guard)

  • 多因素认证组件(MFA)

  • JavaScript / Node.js

  • Java / Kotlin

    • 用户认证模块

    • 管理模块

      • 管理用户
      • 管理应用
      • 管理角色
      • 管理资源与权限
      • 管理分组
      • 管理组织机构
      • 管理用户自定义字段
      • 管理注册白名单
      • 管理用户池配置
      • 管理日志统计信息
      • 管理多租户
  • Python

  • C#

  • PHP

  • Go

  • Ruby
  • Delphi
  • Android

  • iOS

  • Flutter

  • 微信小程序
  • 微信网页授权
  • React Native
  • 框架集成

  • Radius
  • 错误代码
  1. 开发集成
  2. /
  3. Java / Kotlin
  4. /
  5. 管理模块
  6. /
  7. 管理组织机构

¶ 管理组织机构

更新时间: 2025-02-18 09:00:47
编辑

一个 Authing 用户池可以创建多个组织机构。此模块用于管理 Authing 组织机构,可以进行组织机构的增删改查、添加删除移动节点、导入组织机构等操作。

¶ 创建组织机构

OrgManagementClient().create(param)

创建组织机构,会创建一个只有一个节点的组织机构。 如果你想将一个完整的组织树导入进来,请使用 importByJson 方法。

¶ 参数

  • param <CreateOrgParam>
  • param.name <String> 组织机构名称,该名称会作为该组织机构根节点的名称。
  • param.code <String> 根节点唯一标志,必须为合法的英文字符。
  • param.description <String> 根节点描述

¶ 示例

Org org = managementClient.org().create(new CreateOrgParam("name1", "org1", "desc1")).execute();

¶ 删除组织机构

OrgManagementClient().deleteById(id)

删除组织机构树

¶ 参数

  • id <String> 组织机构 ID

¶ 示例

managementClient.org().deleteById("id").execute();

¶ 获取用户池组织机构列表

OrgManagementClient().list(param)

获取用户池组织机构列表

¶ 参数

  • param <OrgsParam>
  • param.page <Integer> 页码,默认值:1。
  • param.limit <Integer> 每页展示条数,默认值:10。
  • param.sortBy <SortByEnum> 排序规则

¶ 示例

PaginatedOrgs orgs = managementClient.org().list(new OrgsParam(1, 10, SortByEnum.CREATEDAT_DESC)).execute();

¶ 根据节点 Id 查询节点

OrgManagementClient().findNodeById(nodeId)

根据节点 Id 查询节点

¶ 参数

  • nodeId <String> 节点 ID

¶ 示例

Node node = managementClient.org().findNodeById("nodeId").execute();

¶ 添加节点

OrgManagementClient().addNode(param)

在组织机构中添加一个节点

¶ 参数

  • param <AddNodeV2Param>
  • param.orgId <String> 组织机构 ID
  • param.parentNodeId <String> 父节点 ID
  • param.name <String> 节点名称
  • param.nameI18n <String> 节点名称,国际化。
  • param.code <String> 节点唯一标志
  • param.description <String> 节点描述信息
  • param.descriptionI18n <String> 节点描述信息国际化

¶ 示例

AddNodeV2Param param = new AddNodeV2Param("orgId", "orgName").withParentNodeId("parentId");
Node node = managementClient.org().addNode(param).execute();

¶ 修改节点

OrgManagementClient().updateNode(param)

修改节点数据

¶ 参数

  • param <UpdateNodeParam>
  • param.id <String> 节点唯一标志
  • param.code <String> 节点唯一标志
  • param.name <String> 节点名称
  • param.description <String> 节点描述信息

¶ 示例

UpdateNodeParam param = new UpdateNodeParam(0, "");
param.setId("id");
param.setName("name");
param.setDescription("description");
Node node = managementClient.org().updateNode(param).execute();

¶ 获取组织机构详情

OrgManagementClient().findById(id)

通过组织机构 ID 获取组织机构详情

¶ 参数

  • id <String> 组织机构 ID

¶ 示例

Org org = managementClient.org().findById("id").execute();

¶ 删除节点

OrgManagementClient().deleteNode(param)

删除组织机构树中的某一个节点

¶ 参数

  • param <DeleteNodeParam>
  • param.orgId <String> 组织机构 ID
  • param.nodeId <String> 节点 ID

¶ 示例

managementClient.org().deleteNode(new DeleteNodeParam("orgId", "nodeId")).execute();

¶ 移动节点

OrgManagementClient().moveNode(orgId, nodeId, targetParentId)

移动组织机构节点,移动某节点时需要指定该节点新的父节点。注意不能将一个节点移动到自己的子节点下面。

¶ 参数

  • orgId <String> 组织机构 ID
  • nodeId <String> 需要移动的节点 ID
  • targetParentId <String> 目标父节点 ID

¶ 示例

Org org = managementClient.org().moveNode("orgId", "nodeId", "targetParentId").execute();

¶ 判断是否为根节点

OrgManagementClient().isRootNode(nodeId, orgId)

判断一个节点是不是组织树的根节点

¶ 参数

  • nodeId <String> 节点 ID
  • orgId <String> 组织机构 ID

¶ 示例

Boolean flag = managementClient.org().isRootNode("nodeId", "orgId").execute();

¶ 获取子节点列表

OrgManagementClient().listChildren(orgId, nodeId)

查询一个节点的子节点列表

¶ 参数

  • orgId <String> 组织机构 ID
  • nodeId <String> 节点 ID

¶ 示例

List<Node> nodes = managementClient.org().listChildren("orgId", "nodeId").execute();

¶ 模糊搜索组织节点

OrgManagementClient().searchNodes(searchNodesParam)

通过节点名称模糊搜索组织节点

¶ 参数

  • searchNodesParam.keyword <String> 组织机构名称关键字

¶ 示例

List<Node> list = orgManagementClient.searchNodes(new SearchNodesParam("test")).execute();

¶ 获取根节点

OrgManagementClient().rootNode(rootNodeParam)

获取一个组织的根节点

¶ 参数

  • rootNodeParam <RootNodeParam>
  • rootNodeParam.orgId <String> 组织机构 ID

¶ 示例

Node node = managementClient.org().rootNode(new RootNodeParam(0, "orgId")).execute();

¶ 通过 JSON 导入

OrgManagementClient().importByJson(json)

通过一个 JSON 树结构导入组织机构

¶ 参数

  • json <String> JSON 格式的树结构,详细格式请见示例代码。

¶ 示例

json examples:

{
  name: '北京某某公司有限公司',
  code: 'example',
  children: [
     {
         code: 'operation',
         name: '运营',
         description: '商业化部门'
     },
     {
        code: 'dev',
        name: '研发',
        description: '研发部门',
        children: [
          {
            code: 'backend',
            name: '后端',
            description: '后端研发部门'
          }
        ]
     }
  ]
}

Map map1 = new HashMap<>();
map1.put("name","ceshi11");
map1.put("code","ceshi11");

Map map2 = new HashMap<>();
map2.put("name","ceshi12");
map2.put("code","ceshi12");

Map map = new HashMap<>();
map.put("name","ceshi1");
map.put("code","ceshi1");
map.put("children",Arrays.asList(map1,map2));

Gson gson = new Gson();
String jsonStr = gson.toJson(map);
Node nodes = managementClient.org().importByJson(jsonStr).execute();

¶ 添加成员

OrgManagementClient().addMembers(nodeId, userIds)

节点添加成员

¶ 参数

  • nodeId <String> 节点 ID
  • userIds <List<String>> 用户 ID 列表

¶ 示例

Node node = managementClient.org().addMembers("nodeId", Arrays.asList("userId")).execute();

¶ 移动成员

OrgManagementClient().moveMembers(options)

移动源结点成员到目标结点

¶ 参数

  • options <MoveMembersParam>
  • options.sourceNodeId <String> 源节点 ID
  • options.targetNodeId <String> 目标节点 ID
  • options.userIds <List<String>> 用户 ID 列表

¶ 示例

MoveMembersParam param = new MoveMembersParam(Arrays.asList("userId"), "targetNodeId", "sourceNodeId");
CommonMessage res = managementClient.org().moveMembers(param).execute();

¶ 设置用户主部门

OrgManagementClient().setMainDepartment(userId, departmentId)

设置用户主部门

¶ 参数

  • userId <String> 用户 ID
  • departmentId <String> 主部门 ID

¶ 示例

CommonMessage res = managementClient.org().setMainDepartment("userId", "departmentId").execute();

¶ 组织机构同步

OrgManagementClient().startSync(options)

设置用户主部门

¶ 参数

  • options <OrgStartSyncOptions>
  • options.providerType <String> 可选类型:dingtalk-钉钉 wechatwork-企业微信 ad-AD。
  • options.adConnectorId <String> AD Connector ID,providerType 为 AD 时必传。

¶ 示例

Boolean res = managementClient.org().startSync("wechatwork", "").execute();

¶ 获取节点成员

OrgManagementClient().listMembers(param)

获取节点成员,可以获取直接添加到该节点中的用户,也可以获取到该节点子节点的用户。

¶ 参数

  • param <NodeByIdWithMembersParam>
  • param.page <Integer> 页码,默认值:1。
  • param.limit <Integer> 每页条数,默认值:10。
  • param.sortBy <SortByEnum> 排序规则
  • param.includeChildrenNodes <Boolean> 是否获取所有子节点的成员,默认值:false。
  • param.id <String> 节点 ID

¶ 示例

Node node = managementClient.org().listMembers(new NodeByIdWithMembersParam("id")).execute();

¶ 删除成员

OrgManagementClient().removeMembers(nodeId, userIds)

删除节点成员

¶ 参数

  • nodeId <String> 节点 ID
  • userIds <List<String>> 用户 ID 列表

¶ 示例

Node node = managementClient.org().removeMembers("nodeId", Arrays.asList("userId")).execute();

¶ 导出所有组织机构数据

OrgManagementClient().exportAll()

导出所有组织机构,返回的数据结构为一个递归的数结构。

¶ 示例

List<Node> nodes = this.orgManagementClient.exportAll().execute();

¶ 示例数据

[
  {
    "id": "601f59578308478a692a71ea",
    "createdAt": "2021-02-07T03:07:03.822Z",
    "updatedAt": "2021-02-07T03:07:03.822Z",
    "userPoolId": "59f86b4832eb28071bdd9214",
    "orgId": "601f59573abea48cceb188c6",
    "name": "科技公司",
    "nameI18n": null,
    "description": null,
    "descriptionI18n": null,
    "order": null,
    "code": null,
    "children": [
      {
        "id": "601f5966800e61428d4190fb",
        "createdAt": "2021-02-07T03:07:18.835Z",
        "updatedAt": "2021-02-07T03:07:18.835Z",
        "userPoolId": "59f86b4832eb28071bdd9214",
        "orgId": "601f59573abea48cceb188c6",
        "name": "产品",
        "nameI18n": null,
        "description": null,
        "descriptionI18n": null,
        "order": null,
        "code": null,
        "children": [],
        "depth": 1,
        "root": false,
        "members": [
          {
            "id": "5a597f35085a2000144a10ed",
            "createdAt": "2021-02-02T02:36:32.172Z",
            "updatedAt": "2021-02-05T11:30:14.050Z",
            "userPoolId": "59f86b4832eb28071bdd9214",
            "isRoot": true,
            "status": "Activated",
            "oauth": null,
            "email": "root@authing.cn",
            "phone": null,
            "username": "root",
            "unionid": null,
            "openid": null,
            "nickname": null,
            "company": null,
            "photo": "https://files.authing.co/authing-console/default-user-avatar.png",
            "browser": null,
            "device": null,
            "token": "",
            "tokenExpiredAt": "2021-02-19T11:30:13.927Z",
            "loginsCount": 4,
            "lastIp": "::1",
            "name": null,
            "givenName": null,
            "familyName": null,
            "middleName": null,
            "profile": null,
            "preferredUsername": null,
            "website": null,
            "gender": "U",
            "birthdate": null,
            "zoneinfo": null,
            "locale": null,
            "address": null,
            "formatted": null,
            "streetAddress": null,
            "locality": null,
            "region": null,
            "postalCode": null,
            "city": null,
            "province": null,
            "country": null,
            "registerSource": ["offcial:import"],
            "emailVerified": false,
            "phoneVerified": false,
            "lastLogin": "2021-02-05T11:30:14.019Z",
            "blocked": false,
            "isDeleted": false,
            "sendSmsCount": 0,
            "sendSmsLimitCount": 1000,
            "signedUp": "2021-02-02T02:36:32.172Z",
            "externalId": null,
            "mainDepartmentId": null,
            "mainDepartmentCode": null,
            "lastMfaTime": null,
            "passwordSecurityLevel": null
          }
        ]
      },
      {
        "id": "601f59622a1dea5ae5ada750",
        "createdAt": "2021-02-07T03:07:14.163Z",
        "updatedAt": "2021-02-07T03:07:14.163Z",
        "userPoolId": "59f86b4832eb28071bdd9214",
        "orgId": "601f59573abea48cceb188c6",
        "name": "研发",
        "nameI18n": null,
        "description": null,
        "descriptionI18n": null,
        "order": null,
        "code": null,
        "children": [
          {
            "id": "601f597e62eaeda4e17e3352",
            "createdAt": "2021-02-07T03:07:42.475Z",
            "updatedAt": "2021-02-07T03:07:42.475Z",
            "userPoolId": "59f86b4832eb28071bdd9214",
            "orgId": "601f59573abea48cceb188c6",
            "name": "后端",
            "nameI18n": null,
            "description": null,
            "descriptionI18n": null,
            "order": null,
            "code": null,
            "children": [],
            "depth": 2,
            "root": false,
            "members": []
          }
        ],
        "depth": 1,
        "root": false,
        "members": []
      },
      {
        "id": "601f596e89427f0549daf48f",
        "createdAt": "2021-02-07T03:07:26.919Z",
        "updatedAt": "2021-02-07T03:07:26.919Z",
        "userPoolId": "59f86b4832eb28071bdd9214",
        "orgId": "601f59573abea48cceb188c6",
        "name": "商业化",
        "nameI18n": null,
        "description": null,
        "descriptionI18n": null,
        "order": null,
        "code": null,
        "children": [],
        "depth": 1,
        "root": false,
        "members": []
      }
    ],
    "depth": 0,
    "root": true,
    "members": []
  }
]

¶ 导出某个组织机构数据

OrgManagementClient().exportByOrgId(orgId)

根据组织机构 ID 导出某个组织机构数据

¶ 参数

  • orgId 组织机构 ID

¶ 示例

String orgId = "60210d36262e1086cd2d1209";
Node node = this.orgManagementClient.exportByOrgId(orgId).execute();

¶ 示例数据

{
  "id": "601f59578308478a692a71ea",
  "createdAt": "2021-02-07T03:07:03.822Z",
  "updatedAt": "2021-02-07T03:07:03.822Z",
  "userPoolId": "59f86b4832eb28071bdd9214",
  "orgId": "601f59573abea48cceb188c6",
  "name": "科技公司",
  "nameI18n": null,
  "description": null,
  "descriptionI18n": null,
  "order": null,
  "code": null,
  "children": [
    {
      "id": "601f5966800e61428d4190fb",
      "createdAt": "2021-02-07T03:07:18.835Z",
      "updatedAt": "2021-02-07T03:07:18.835Z",
      "userPoolId": "59f86b4832eb28071bdd9214",
      "orgId": "601f59573abea48cceb188c6",
      "name": "产品",
      "nameI18n": null,
      "description": null,
      "descriptionI18n": null,
      "order": null,
      "code": null,
      "children": [],
      "depth": 1,
      "root": false,
      "members": [
        {
          "id": "5a597f35085a2000144a10ed",
          "createdAt": "2021-02-02T02:36:32.172Z",
          "updatedAt": "2021-02-05T11:30:14.050Z",
          "userPoolId": "59f86b4832eb28071bdd9214",
          "isRoot": true,
          "status": "Activated",
          "oauth": null,
          "email": "root@authing.cn",
          "phone": null,
          "username": "root",
          "unionid": null,
          "openid": null,
          "nickname": null,
          "company": null,
          "photo": "https://files.authing.co/authing-console/default-user-avatar.png",
          "browser": null,
          "device": null,
          "token": "",
          "tokenExpiredAt": "2021-02-19T11:30:13.927Z",
          "loginsCount": 4,
          "lastIp": "::1",
          "name": null,
          "givenName": null,
          "familyName": null,
          "middleName": null,
          "profile": null,
          "preferredUsername": null,
          "website": null,
          "gender": "U",
          "birthdate": null,
          "zoneinfo": null,
          "locale": null,
          "address": null,
          "formatted": null,
          "streetAddress": null,
          "locality": null,
          "region": null,
          "postalCode": null,
          "city": null,
          "province": null,
          "country": null,
          "registerSource": ["offcial:import"],
          "emailVerified": false,
          "phoneVerified": false,
          "lastLogin": "2021-02-05T11:30:14.019Z",
          "blocked": false,
          "isDeleted": false,
          "sendSmsCount": 0,
          "sendSmsLimitCount": 1000,
          "signedUp": "2021-02-02T02:36:32.172Z",
          "externalId": null,
          "mainDepartmentId": null,
          "mainDepartmentCode": null,
          "lastMfaTime": null,
          "passwordSecurityLevel": null
        }
      ]
    },
    {
      "id": "601f59622a1dea5ae5ada750",
      "createdAt": "2021-02-07T03:07:14.163Z",
      "updatedAt": "2021-02-07T03:07:14.163Z",
      "userPoolId": "59f86b4832eb28071bdd9214",
      "orgId": "601f59573abea48cceb188c6",
      "name": "研发",
      "nameI18n": null,
      "description": null,
      "descriptionI18n": null,
      "order": null,
      "code": null,
      "children": [
        {
          "id": "601f597e62eaeda4e17e3352",
          "createdAt": "2021-02-07T03:07:42.475Z",
          "updatedAt": "2021-02-07T03:07:42.475Z",
          "userPoolId": "59f86b4832eb28071bdd9214",
          "orgId": "601f59573abea48cceb188c6",
          "name": "后端",
          "nameI18n": null,
          "description": null,
          "descriptionI18n": null,
          "order": null,
          "code": null,
          "children": [],
          "depth": 2,
          "root": false,
          "members": []
        }
      ],
      "depth": 1,
      "root": false,
      "members": []
    },
    {
      "id": "601f596e89427f0549daf48f",
      "createdAt": "2021-02-07T03:07:26.919Z",
      "updatedAt": "2021-02-07T03:07:26.919Z",
      "userPoolId": "59f86b4832eb28071bdd9214",
      "orgId": "601f59573abea48cceb188c6",
      "name": "商业化",
      "nameI18n": null,
      "description": null,
      "descriptionI18n": null,
      "order": null,
      "code": null,
      "children": [],
      "depth": 1,
      "root": false,
      "members": []
    }
  ],
  "depth": 0,
  "root": true,
  "members": []
}

¶ 根据部门 ID 获取被授权的所有资源列表

managementClient.org().listAuthorizedResourcesByNodeId(param)

根据部门 Id 获取一个部门被授权的所有资源。

¶ 参数

  • param <ListNodeByIdAuthorizedResourcesParam>
  • param.nodeId <String> 部门 ID
  • param.namespace <String> 权限分组的 Code,详情请见使用权限分组管理权限资源。
  • param.resourceType <String> 可选,资源类型,默认会返回所有有权限的资源,现有资源类型如下:
    • DATA:数据类型;
    • API:API 类型数据;
    • MENU:菜单类型数据;
    • BUTTON:按钮类型数据。

¶ 示例

ListNodeByIdAuthorizedResourcesParam param = new ListNodeByIdAuthorizedResourcesParam("ORG_ID")
        .withNamespace("default")
        .withResourceType("DATA");
Node res = managementClient.org().listAuthorizedResourcesByNodeId(param).execute();

¶ 示例数据

  • type 资源类型
  • code 资源描述符,如果是 DATA 类型资源,格式为 resourceType:resourceId,如 books:* 表示所有书籍,books:1 表示 ID 为 1 的书籍。
  • actions 用户被授权对该资源的操作
{
  "totalCount": 12,
  "list": [
    {
      "code": "menu_a",
      "type": "MENU"
    },
    {
      "code": "menu_b",
      "type": "MENU"
    },
    {
      "code": "books:1",
      "type": "DATA",
      "actions": ["books:delete", "books:update"]
    }
  ]
}

¶ 根据部门 Code 获取被授权的所有资源列表

managementClient.org().listAuthorizedResourcesByNodeCode(param)

根据部门 Code 获取一个部门被授权的所有资源。

¶ 参数

  • param <ListNodeByIdAuthorizedResourcesParam>
  • param.code <String> 部门 Code
  • param.orgId <String> 组织机构 ID
  • param.namespace <String> 权限分组的 Code,详情请见使用权限分组管理权限资源。
  • param.resourceType <String> 可选,资源类型,默认会返回所有有权限的资源,现有资源类型如下:
    • DATA:数据类型;
    • API:API 类型数据;
    • MENU:菜单类型数据;
    • BUTTON:按钮类型数据。

¶ 示例

ListNodeByCodeAuthorizedResourcesParam param = 
        new ListNodeByCodeAuthorizedResourcesParam("ORG_ID", "nodeCode", "namespace");
Node res = managementClient.org().listAuthorizedResourcesByNodeCode(param).execute();

¶ 示例数据

{
  "totalCount": 12,
  "list": [
    {
      "code": "menu_a",
      "type": "MENU"
    },
    {
      "code": "menu_b",
      "type": "MENU"
    },
    {
      "code": "books:1",
      "type": "DATA",
      "actions": ["books:delete", "books:update"]
    }
  ]
}
上一篇: 管理分组 下一篇: 管理用户自定义字段
  • 创建组织机构
  • 删除组织机构
  • 获取用户池组织机构列表
  • 根据节点 Id 查询节点
  • 添加节点
  • 修改节点
  • 获取组织机构详情
  • 删除节点
  • 移动节点
  • 判断是否为根节点
  • 获取子节点列表
  • 模糊搜索组织节点
  • 获取根节点
  • 通过 JSON 导入
  • 添加成员
  • 移动成员
  • 设置用户主部门
  • 组织机构同步
  • 获取节点成员
  • 删除成员
  • 导出所有组织机构数据
  • 导出某个组织机构数据
  • 根据部门 ID 获取被授权的所有资源列表
  • 根据部门 Code 获取被授权的所有资源列表

用户身份管理

集成第三方登录
手机号闪验 (opens new window)
通用登录表单组件
自定义认证流程

企业内部管理

单点登录
多因素认证
权限管理

开发者

开发文档
框架集成
博客 (opens new window)
GitHub (opens new window)
社区用户中心 (opens new window)

公司

400 888 2106
sales@authing.cn
北京市朝阳区北辰世纪中心 B 座 16 层(总)
成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

京ICP备19051205号

beian京公网安备 11010802035968号

© 北京蒸汽记忆科技有限公司