创建或更新用户 API
编辑创建或更新用户 API
编辑在本地 realm 中添加和更新用户。这些用户通常被称为本地用户。
先决条件
编辑- 要使用此 API,您必须至少拥有
manage_security
集群权限。
路径参数
编辑-
username
-
(必需,字符串)用户的标识符。
用户名必须至少 1 个字符,不超过 507 个字符。它们可以包含字母数字字符(
a-z
、A-Z
、0-9
)、空格、标点符号和 基本拉丁 (ASCII) 块中的可打印符号。不允许前导或尾随空格。
请求体
编辑以下参数可以在 POST 或 PUT 请求的主体中指定
-
enabled
- (布尔值)指定是否启用用户。默认值为
true
。 -
email
- (字符串)用户的电子邮件。
-
full_name
- (字符串)用户的全名。
-
metadata
- (对象)您想要与用户关联的任意元数据。
-
password
-
(必需*,字符串)用户的密码。密码必须至少 6 个字符长。
添加用户时,
password
或password_hash
之一是必需的。更新现有用户时,密码是可选的,因此可以在不修改用户密码的情况下更新用户的其他字段(例如他们的角色)。 -
password_hash
-
(字符串)用户密码的哈希值。这必须使用与配置用于密码存储的相同哈希算法生成。有关更多详细信息,请参阅 用户缓存和密码哈希算法中
xpack.security.authc.password_hashing.algorithm
设置的说明。使用此参数允许客户端出于性能和/或机密性原因预先哈希密码。
password
参数和password_hash
参数不能在同一请求中使用。 -
roles
- (必需,列表)用户拥有的一组角色。角色决定用户的访问权限。要创建一个没有任何角色的用户,请指定一个空列表:
[]
。
示例
编辑以下示例创建用户 jacknich
resp = client.security.put_user( username="jacknich", password="l0ng-r4nd0m-p@ssw0rd", roles=[ "admin", "other_role1" ], full_name="Jack Nicholson", email="[email protected]", metadata={ "intelligence": 7 }, ) print(resp)
const response = await client.security.putUser({ username: "jacknich", password: "l0ng-r4nd0m-p@ssw0rd", roles: ["admin", "other_role1"], full_name: "Jack Nicholson", email: "[email protected]", metadata: { intelligence: 7, }, }); console.log(response);
POST /_security/user/jacknich { "password" : "l0ng-r4nd0m-p@ssw0rd", "roles" : [ "admin", "other_role1" ], "full_name" : "Jack Nicholson", "email" : "[email protected]", "metadata" : { "intelligence" : 7 } }
成功的调用会返回一个 JSON 结构,该结构显示用户是否已被创建或更新。
添加用户后,可以对该用户的请求进行身份验证。例如
curl -u jacknich:l0ng-r4nd0m-p@ssw0rd https://127.0.0.1:9200/_cluster/health