激活用户配置文件 API
为终端用户创建或更新配置文件文档。
POST /_security/profile/_activate
前置条件
- 要使用此 API,你必须具有
manage_user_profile集群权限。
描述
用户配置文件功能仅供 Kibana 以及 Elastic 的可观测性、企业搜索和 Elastic Security 解决方案使用。个别用户和外部应用程序不应直接调用此 API。Elastic 保留在未来版本中更改或删除此功能而不事先通知的权利。
激活用户配置文件 API 使用从用户身份验证对象中提取的信息为终端用户创建或更新配置文件文档,这些信息包括 username、full_name、roles 以及身份验证 realm。例如,在 JWT access_token 的情况下,配置文件用户的 username 是从对该令牌进行身份验证的 JWT realm 的 claims.principal 设置所指向的 JWT 令牌声明中提取的。
- 更新配置文件文档时,如果该文档之前被禁用,此 API 会将其启用。
- 更新不会更改
labels或data字段的现有内容。 - 调用应用程序必须拥有目标用户的
access_token,或username和password的组合。 - 此 API 仅适用于需要为终端用户创建或更新配置文件的应用程序(例如 Kibana)。
请求体
grant_type
(必需,字符串)授权类型。有效值包括:
access_token:提供来自 Elasticsearch 令牌服务的访问令牌,或 JWT(access_token或id_token)。password:提供目标用户的username和password。
access_token
(仅在 access_token 授权类型下必需,字符串)用户的 Elasticsearch 访问令牌或 JWT。支持 access 和 id 两种 JWT 令牌类型(取决于 JWT realm 的配置)。对任何其他授权类型无效。
username
(仅在 password 授权类型下必需,字符串)标识用户的用户名。对任何其他授权类型无效。
password
(仅在 password 授权类型下必需,字符串)用户的密码。对任何其他授权类型无效。
client_authentication
(可选,对象)当使用带有 JWT 的 access_token 授权类型时,指定需要客户端身份验证的 JWT 的客户端身份验证信息(通常通过 ES-Client-Authentication 请求头提供),包含:
scheme(必需,字符串)区分大小写的方案。当前唯一支持的值是SharedSecret。value(必需,字符串)方案后面的值。例如,如果请求头为ES-Client-Authentication: SharedSecret myShar3dS3cret,则value应为myShar3dS3cret。
响应体
成功的调用返回一个 JSON 结构,其中包含:
uid
配置文件的唯一 ID,例如 u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0。
enabled
指示配置文件是否启用的布尔值。
last_synchronized
此操作的时间戳。
user
用户信息对象,包含 username、roles、realm_name、full_name 和 email。
labels
标签对象(创建时为空 {})。
data
数据对象(创建时为空 {})。
_doc
版本控制编号,包含 _primary_term 和 _seq_no。
示例
以下示例使用 password 授权类型激活用户 jacknich 的配置文件:
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" : "jacknich@example.com"
},
"labels" : { },
"data" : { },
"_doc" : {
"_primary_term" : 88,
"_seq_no" : 66
}
}