SAML 身份验证 API编辑

将 SAML Response 消息提交给 Elasticsearch 以供使用。

此 API 旨在供除 Kibana 之外的自定义 Web 应用程序使用。如果您使用的是 Kibana,请参阅 在 Elastic Stack 上配置 SAML 单点登录

请求编辑

POST /_security/saml/authenticate

描述编辑

提交的 SAML 消息可以是

  • 对先前使用 SAML 准备身份验证 API 创建的 SAML 身份验证请求的响应。
  • 在 IdP 发起的单点登录 (SSO) 流程中,非主动的 SAML 消息。

在这两种情况下,SAML 消息都需要是具有 <Response> 根元素的 Base64 编码 XML 文档。

验证成功后,Elasticsearch 将响应一个 Elasticsearch 内部访问令牌和刷新令牌,这些令牌可随后用于身份验证。此 API 端点实际上将指示 IdP 中成功身份验证的 SAML 响应交换为 Elasticsearch 访问令牌和刷新令牌,这些令牌可用于针对 Elasticsearch 进行身份验证。

Elasticsearch 通过 SAML API 公开所有必要的 SAML 相关功能。这些 API 在内部由 Kibana 用于提供基于 SAML 的身份验证,但也可由其他自定义 Web 应用程序或其他客户端使用。另请参阅 SAML 准备身份验证 APISAML 撤销 APISAML 注销 APISAML 完成注销 API

请求正文编辑

内容
(必需,字符串) 用户浏览器发送的 SAML 响应,通常是 Base64 编码的 XML 文档。
ID
(必需,数组) 包含 API 调用者对当前用户的所有有效 SAML 请求 ID 的 JSON 数组。
领域
(可选,字符串) 应验证 SAML 响应的领域的名称。在定义了多个 SAML 领域的情况下很有用。

响应正文编辑

access_token
(字符串) Elasticsearch 生成的访问令牌。
用户名
(字符串) 已验证用户的名称。
expires_in
(整数) 令牌过期前剩余的时间(以秒为单位)。
refresh_token
(字符串) Elasticsearch 生成的刷新令牌。
领域
(字符串) 用户通过其进行身份验证的领域的名称。

示例编辑

以下示例将指示 SAML IdP 中成功身份验证的 SAML 响应交换为 Elasticsearch 访问令牌和刷新令牌,以用于后续请求。

POST /_security/saml/authenticate
{
  "content" : "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
  "ids" : ["4fee3b046395c4e751011e97f8900b5273d56685"]
}

API 返回以下响应

{
  "access_token" : "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
  "username" : "Bearer",
  "expires_in" : 1200,
  "refresh_token": "mJdXLtmvTUSpoLwMvdBt_w",
  "realm": "saml1"
}