SAML 完全注销 API

编辑

验证从 SAML IdP 发送的注销响应。

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

请求

编辑

POST /_security/saml/complete_logout

描述

编辑

在处理 SP 发起的 SAML 单一注销 后,SAML IdP 可能会将注销响应发送回 SP。此 API 通过确保内容相关并验证其签名来验证响应。如果验证过程成功,则返回空响应。响应可以通过 IdP 使用 HTTP-Redirect 或 HTTP-Post 绑定发送。此 API 的调用方必须相应地准备请求,以便此 API 可以处理其中任何一个。

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

请求体

编辑
realm
(必填,字符串) Elasticsearch 中 SAML 域的名称,用于验证注销响应的配置。
ids
(必填,数组) 包含 API 调用方当前用户的所有有效 SAML 请求 ID 的 JSON 数组。
query_string
(可选,字符串) 如果 SAML IdP 使用 HTTP-Redirect 绑定发送注销响应,则此字段必须设置为重定向 URI 的查询字符串。
queryString
[7.14.0] 已在 7.14.0 中弃用。请改用 query_string 请参阅 query_string
content
(可选,字符串) 如果 SAML IdP 使用 HTTP-Post 绑定发送注销响应,则此字段必须设置为注销响应中 SAMLResponse 表单参数的值。

示例

编辑

以下示例使用 HTTP-Redirect 绑定验证 SAML IdP 发送的注销响应

resp = client.security.saml_complete_logout(
    realm="saml1",
    ids=[
        "_1c368075e0b3..."
    ],
    query_string="SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
)
print(resp)
const response = await client.security.samlCompleteLogout({
  realm: "saml1",
  ids: ["_1c368075e0b3..."],
  query_string:
    "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
});
console.log(response);
POST /_security/saml/complete_logout
{
  "realm": "saml1",
  "ids": [ "_1c368075e0b3..." ],
  "query_string": "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK..."
}

如果注销响应使用 HTTP-Post 绑定发送,则可以按如下方式进行验证

resp = client.security.saml_complete_logout(
    realm="saml1",
    ids=[
        "_1c368075e0b3..."
    ],
    content="PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46...",
)
print(resp)
const response = await client.security.samlCompleteLogout({
  realm: "saml1",
  ids: ["_1c368075e0b3..."],
  content: "PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46...",
});
console.log(response);
POST /_security/saml/complete_logout
{
  "realm": "saml1",
  "ids": [ "_1c368075e0b3..." ],
  "content": "PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46..."
}

API 在成功时返回空响应。