激活用户配置文件 API
编辑激活用户配置文件 API编辑
用户配置文件功能仅供 Kibana 和 Elastic 的可观察性、企业搜索和 Elastic 安全解决方案使用。个人用户和外部应用程序不应直接调用此 API。Elastic 保留更改或删除此功能的权利,恕不另行通知。
代表其他用户创建或更新用户配置文件。
请求编辑
POST /_security/profile/_activate
先决条件编辑
- 要使用此 API,您必须具有
manage_user_profile
集群权限。
描述编辑
激活用户配置文件 API 为最终用户创建或更新配置文件文档,其中包含从用户身份验证对象中提取的信息,包括 username
、full_name
、roles
和身份验证领域。例如,在 JWT access_token
情况下,配置文件用户的 username
从 JWT 令牌声明中提取,该声明由身份验证令牌的 JWT 领域的 claims.principal
设置指向。
更新配置文件文档时,API 会启用该文档(如果它被禁用)。任何更新都不会更改 labels
或 data
字段的现有内容。
此 API 仅供需要为最终用户创建或更新配置文件的应用程序(如 Kibana)使用。
调用应用程序必须具有 access_token
或 username
和 password
的组合,用于配置文件文档所针对的用户。
请求正文编辑
-
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
或 JWTid_token
)。 -
password
- 在这种类型的授权中,您必须提供要为其创建 API 密钥的用户的
username
和password
。
-
-
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 } }