SAML 预准备身份验证 API

编辑

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 相关功能。Kibana 内部使用这些 API 来提供基于 SAML 的身份验证,但其他自定义 Web 应用程序或其他客户端也可以使用这些 API。另请参阅 SAML 身份验证 APISAML 无效 APISAML 注销 APISAML 完全注销 API

请求体

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

响应体

编辑
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"
}