User API

概述

User API是用于管理 Fess 用户账户的REST API。 您可以创建、获取、更新、删除用户,以及分配角色和组。

这是一个管理用API,使用时需要通过管理员访问令牌进行认证。 有关认证方式和公共规格,请参阅 Admin API 概述

所有响应均包装在 response 对象中,并包含以下公共字段:

  • version :Fess 产品版本字符串。

  • status :处理结果状态码(0 =成功,1 =请求错误,2 =系统错误,3 =未授权,9 =失败)。

基础URL

/api/admin/user

端点列表

方法 路径 说明
GET /settings 获取用户列表
GET /setting/{id} 获取用户
POST /setting 创建用户
PUT /setting 更新用户
DELETE /setting/{id} 删除用户

获取用户列表

请求

GET /api/admin/user/settings

参数

参数 类型 必需 说明
size Integer 每页记录数。默认值为配置项 paging.page.size 的值(默认:25)。
page Integer 页码(从1开始)。默认值为1。

Note

在当前实现中,获取用户列表端点不应用 sizepage 参数。 始终返回第一页,记录数由服务器设置 paging.page.size 决定(默认:25),并按用户名(name)升序排序。 匹配用户的总数可通过 response.total 获取。

响应

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "settings": [
      {
        "id": "YWRtaW4=",
        "name": "admin",
        "attributes": {
          "surname": "Administrator",
          "givenName": "System",
          "mail": "admin@example.com"
        },
        "roles": ["admin"],
        "groups": [],
        "versionNo": 1
      }
    ],
    "total": 10
  }
}
  • settings :当前页包含的用户数组。

  • total :匹配条件的用户总数。

获取用户

请求

GET /api/admin/user/setting/{id}

{id} 中指定目标用户的文档ID。

响应

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "setting": {
      "id": "YWRtaW4=",
      "name": "admin",
      "attributes": {
        "surname": "Administrator",
        "givenName": "System",
        "mail": "admin@example.com",
        "telephoneNumber": "",
        "uidNumber": "",
        "gidNumber": "",
        "homeDirectory": ""
      },
      "roles": ["admin"],
      "groups": [],
      "versionNo": 1
    }
  }
}

Note

attributes 包含用户存储的所有属性,但不包含 namepasswordrolesgroupspassword 不包含在响应中。

创建用户

请求

POST /api/admin/user/setting
Content-Type: application/json

请求体

{
  "name": "testuser",
  "password": "securepassword",
  "confirmPassword": "securepassword",
  "attributes": {
    "surname": "Test",
    "givenName": "User",
    "mail": "testuser@example.com"
  },
  "roles": ["user"],
  "groups": ["group_id_1"]
}

字段说明

字段 必需 说明
name 用户名(登录ID)
password 密码
confirmPassword 确认密码
attributes 属性映射(见下文)
roles 角色ID数组
groups 组ID数组

Note

REST API不执行密码必填检查、passwordconfirmPassword 的一致性检查,以及密码策略验证(这些仅在管理界面中应用)。 实际使用中,建议指定有效的 password 且其值与 confirmPassword 一致。

attributes 的键为用户实体的属性名(源自LDAP的模式项目名)。 常用的键如下:

  • surnamegivenNamedisplayNamemail

  • telephoneNumbermobilehomePhone

  • employeeNumbertitledescriptionhomeDirectory

  • uidNumbergidNumber

uidNumbergidNumber 必须为数值(在更新时会进行类型验证)。 此外,还可以指定许多其他LDAP属性键。

Note

创建时,用户ID(文档ID)会自动生成为用户名的Base64 URL编码值 (例如,用户名 admin 对应 YWRtaW4=)。

响应

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "id": "new_user_id",
    "created": true
  }
}
  • id :创建的用户的文档ID。

  • created :创建成功时为 true

更新用户

请求

PUT /api/admin/user/setting
Content-Type: application/json

请求体

{
  "id": "existing_user_id",
  "name": "testuser",
  "password": "newpassword",
  "confirmPassword": "newpassword",
  "attributes": {
    "surname": "Test",
    "givenName": "User Updated",
    "mail": "testuser.updated@example.com"
  },
  "roles": ["user", "editor"],
  "groups": ["group_id_1", "group_id_2"],
  "versionNo": 1
}

字段说明

字段 必需 说明
id 要更新的用户的文档ID。
name 用户名(登录ID)
versionNo 版本号(用于乐观锁)
password 新密码(仅在指定时更新)
confirmPassword 确认密码
attributes 属性映射(参见”创建用户”)
roles 角色ID数组
groups 组ID数组

Note

更新时,idnameversionNo 为必填项。 versionNo 是获取目标用户(GET)时返回的值,对应OpenSearch文档的版本号。 如果与当前版本不匹配,请求将被视为冲突并拒绝更新。

响应

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "id": "existing_user_id",
    "created": false
  }
}
  • created :更新时为 false

删除用户

请求

DELETE /api/admin/user/setting/{id}

{id} 中指定要删除的用户的文档ID。

Note

无法删除当前已登录的用户。

响应

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "id": "deleted_user_id",
    "created": false
  }
}
  • id :已删除用户的文档ID。

使用示例

创建新用户

curl -X POST "http://localhost:8080/api/admin/user/setting" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "john.doe",
       "password": "SecureP@ss123",
       "confirmPassword": "SecureP@ss123",
       "attributes": {
         "surname": "Doe",
         "givenName": "John",
         "mail": "john.doe@example.com"
       },
       "roles": ["user"],
       "groups": []
     }'

更改用户角色

curl -X PUT "http://localhost:8080/api/admin/user/setting" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "id": "user_id_123",
       "name": "john.doe",
       "roles": ["user", "editor", "admin"],
       "versionNo": 1
     }'

参考信息