激活用户配置文件 API编辑

用户配置文件功能仅供 Kibana 和 Elastic 的可观察性、企业搜索和 Elastic 安全解决方案使用。个人用户和外部应用程序不应直接调用此 API。Elastic 保留更改或删除此功能的权利,恕不另行通知。

代表其他用户创建或更新用户配置文件。

请求编辑

POST /_security/profile/_activate

先决条件编辑

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

描述编辑

激活用户配置文件 API 为最终用户创建或更新配置文件文档,其中包含从用户身份验证对象中提取的信息,包括 usernamefull_nameroles 和身份验证领域。例如,在 JWT access_token 情况下,配置文件用户的 username 从 JWT 令牌声明中提取,该声明由身份验证令牌的 JWT 领域的 claims.principal 设置指向。

更新配置文件文档时,API 会启用该文档(如果它被禁用)。任何更新都不会更改 labelsdata 字段的现有内容。

此 API 仅供需要为最终用户创建或更新配置文件的应用程序(如 Kibana)使用。

调用应用程序必须具有 access_tokenusernamepassword 的组合,用于配置文件文档所针对的用户。

请求正文编辑

access_token
(必需*,字符串) 用户的 Elasticsearch 访问令牌 或 JWT。两种 访问id JWT 令牌类型都受支持,它们取决于底层 JWT 领域的配置。如果您指定 access_token 授权类型,则此参数是必需的。它对其他授权类型无效。
client_authentication

(可选,对象) 使用 access_token 授权类型时,以及提供 JWT 时,这指定了需要客户端身份验证的 JWT(即通常由 ES-Client-Authentication 请求标头指定的)。

scheme
(必需,字符串) 方案(区分大小写),因为它在 ES-Client-Authentication 请求标头中提供。目前,唯一支持的值是 SharedSecret
value
(必需,字符串) 客户端凭据方案后面的值,因为它在 ES-Client-Authentication 请求标头中提供。例如,如果请求标头将是 ES-Client-Authentication: SharedSecret myShar3dS3cret(如果客户端要直接使用 JWT 进行身份验证),那么这里的 value 应该是 myShar3dS3cret
grant_type

(必需,字符串) 授权类型。

grant_type 的有效值
access_token
在这种类型的授权中,您必须提供由 Elasticsearch 令牌服务创建的访问令牌(请参阅 获取令牌加密 Elasticsearch 的 HTTP 客户端通信),或 JWT(JWT access_token 或 JWT id_token)。
password
在这种类型的授权中,您必须提供要为其创建 API 密钥的用户的 usernamepassword
password
(必需*,字符串) 用户的密码。如果您指定 password 授权类型,则此参数是必需的。它对其他授权类型无效。
username
(必需*,字符串) 用于标识用户的用户名。如果您指定 password 授权类型,则此参数是必需的。它对其他授权类型无效。

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

响应正文编辑

成功的激活用户配置文件 API 调用将返回一个 JSON 结构,其中包含配置文件唯一 ID、用户信息、操作时间戳和版本控制号。

示例编辑

POST /_security/profile/_activate
{
  "grant_type": "password",
  "username" : "jacknich",
  "password" : "l0ng-r4nd0m-p@ssw0rd"
}

API 返回以下响应

{
  "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  "enabled": true,
  "last_synchronized": 1642650651037,
  "user": {
    "username": "jacknich",
    "roles": [
      "admin", "other_role1"
    ],
    "realm_name": "native",
    "full_name": "Jack Nicholson",
    "email": "[email protected]"
  },
  "labels": {},
  "data": {},
  "_doc": {
    "_primary_term": 88,
    "_seq_no": 66
  }
}