创建或更新用户 API编辑

在本地领域添加和更新用户。这些用户通常被称为本地用户

请求编辑

POST /_security/user/<username>

PUT /_security/user/<username>

先决条件编辑

  • 要使用此 API,您必须至少具有 manage_security 集群权限。

描述编辑

添加新用户需要 password,但更新现有用户时可选。要更改用户的密码而不更新任何其他字段,请使用 更改密码 API

有关本地领域的更多信息,请参阅 领域本地用户身份验证

路径参数编辑

username

(必填,字符串) 用户的标识符。

用户名必须至少包含 1 个字符,最多包含 507 个字符。它们可以包含字母数字字符 (a-z, A-Z, 0-9)、空格、标点符号和 基本拉丁语 (ASCII) 块 中的可打印符号。不允许前导或尾随空格。

查询参数编辑

refresh
(字符串) truefalsewait_for 之一。这些值与 索引 API 中的值含义相同,但此 API (Put User) 的默认值为 true

请求正文编辑

以下参数可以在 POST 或 PUT 请求的正文中指定

enabled
(布尔值) 指定用户是否启用。默认值为 true
email
(字符串) 用户的电子邮件。
full_name
(字符串) 用户的姓名。
metadata
(对象) 您要与用户关联的任意元数据。
password

(必填*,字符串) 用户的密码。密码必须至少包含 6 个字符。

添加用户时,需要 passwordpassword_hash 之一。更新现有用户时,密码是可选的,因此可以更新用户上的其他字段(例如其角色)而不修改用户的密码。

password_hash

(字符串) 用户密码的哈希。这必须使用与为密码存储配置的相同的哈希算法生成。有关更多详细信息,请参阅 用户缓存和密码哈希算法 中对 xpack.security.authc.password_hashing.algorithm 设置的说明。

使用此参数允许客户端出于性能和/或机密性原因预先对密码进行哈希处理。

password 参数和 password_hash 参数不能在同一个请求中使用。

roles
(必填,列表) 用户拥有的角色集。角色决定用户的访问权限。要创建没有角色的用户,请指定一个空列表:[]

*表示设置在某些情况下是必需的,但在所有情况下并非必需。

示例编辑

以下示例创建了一个用户 jacknich

POST /_security/user/jacknich
{
  "password" : "l0ng-r4nd0m-p@ssw0rd",
  "roles" : [ "admin", "other_role1" ],
  "full_name" : "Jack Nicholson",
  "email" : "[email protected]",
  "metadata" : {
    "intelligence" : 7
  }
}

成功调用将返回一个 JSON 结构,显示用户是否已创建或更新。

{
  "created": true 
}

更新现有用户时,created 设置为 false。

添加用户后,可以对来自该用户的请求进行身份验证。例如

curl -u jacknich:l0ng-r4nd0m-p@ssw0rd https://127.0.0.1:9200/_cluster/health