SAML 准备认证 API

编辑

基于 Elasticsearch 中相应 SAML 域的配置,创建一个 SAML 认证请求 (<AuthnRequest>) 作为 URL 字符串。

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

请求

编辑

POST /_security/saml/prepare

描述

编辑

此 API 返回一个指向 SAML 身份提供程序的 URL。您可以使用该 URL 重定向用户的浏览器,以便继续认证过程。该 URL 包含一个名为 SAMLRequest 的参数,其中包含一个经过压缩和 Base64 编码的 SAML 认证请求。如果配置指示 SAML 认证请求应签名,则该 URL 将具有两个额外的参数,名为 SigAlgSignature。这些参数包含用于签名的算法和签名值本身。它还会返回一个随机字符串,用于唯一标识此 SAML 认证请求。此 API 的调用者需要存储此标识符,因为它需要在认证过程的后续步骤中使用(请参阅SAML 认证 API)。

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

请求体

编辑
acs
(可选,字符串)断言消费者服务 URL,该 URL 与 Elasticsearch 中某个 SAML 域的 URL 匹配。该域用于生成认证请求。您必须指定此参数或 realm 参数。
realm
(可选,字符串)Elasticsearch 中 SAML 域的名称,将使用该域的配置来生成认证请求。您必须指定此参数或 acs 参数。
relay_state
(可选,字符串)一个字符串,将作为 RelayState 查询参数包含在此 API 返回的重定向 URL 中。如果认证请求已签名,则此值将用作签名计算的一部分。

响应体

编辑
id
(字符串)由 API 调用者存储的 SAML 请求的唯一标识符。
realm
(字符串)用于构造认证请求的 Elasticsearch 域的名称。
redirect
(字符串)要将用户重定向到的 URL。

示例

编辑

以下示例为名为 saml1 的 SAML 域生成 SAML 认证请求。

resp = client.security.saml_prepare_authentication(
    realm="saml1",
)
print(resp)
const response = await client.security.samlPrepareAuthentication({
  realm: "saml1",
});
console.log(response);
POST /_security/saml/prepare
{
  "realm" : "saml1"
}

以下示例为断言使用者服务 URL 与 `https://kibana.org/api/security/saml/callback` 匹配的 SAML 域生成 SAML 认证请求

resp = client.security.saml_prepare_authentication(
    acs="https://kibana.org/api/security/saml/callback",
)
print(resp)
const response = await client.security.samlPrepareAuthentication({
  acs: "https://kibana.org/api/security/saml/callback",
});
console.log(response);
POST /_security/saml/prepare
{
  "acs" : "https://kibana.org/api/security/saml/callback"
}

此 API 返回以下响应

{
  "redirect": "https://my-idp.org/login?SAMLRequest=fVJdc6IwFP0rmbwDgUKLGbFDtc462%2B06FX3Yl50rBJsKCZsbrPbXL6J22hdfk%2FNx7zl3eL%2BvK7ITBqVWCfVdRolQuS6k2iR0mU2dmN6Phgh1FTQ8be2rehH%2FWoGWdESF%2FPST0NYorgElcgW1QG5zvkh%2FPfHAZbwx2upcV5SkiMLYzmqsFba1MAthdjIXy5enhL5a23DPOyo6W7kGBa7cwhZ2gO7G8OiW%2BR400kORt0bag7fzezAlk24eqcD2OxxlsNN5O3MdsW9c6CZnbq7rntF4d3s0D7BaHTZhIWN52P%2BcjiuGRbDU6cdj%2BEjJbJLQv4N4ADdhxBiEZbQuWclY4Q8iABbCXczCdSiKMAC%2FgyO2YqbQgrIJDZg%2FcFjsMD%2Fzb3gUcBa5sR%2F9oWR%2BzuJBqlPG14Jbn0DIf2TZ3Jn%2FXmSUrC5ddQB6bob37uZrJdeF4dIDHV3iuhb70Ptq83kOz53ubDLXlcwPJK0q%2FT42AqxIaAkVCkqm2tRgr49yfJGFU%2FZQ3hy3QyuUpd7obPv97kb%2FAQ%3D%3D"}",
  "realm": "saml1",
  "id": "_989a34500a4f5bf0f00d195aa04a7804b4ed42a1"
}