SAML 失效 API

编辑

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

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

请求

编辑

POST /_security/saml/invalidate

描述

编辑

注销请求来自 IdP 发起的单点注销期间的 SAML IdP。自定义 Web 应用程序可以使用此 API 让 Elasticsearch 处理 LogoutRequest。在成功验证请求后,Elasticsearch 会使与该特定 SAML 主体相对应的访问令牌和刷新令牌失效,并提供包含 SAML LogoutResponse 消息的 URL,以便用户可以重定向回其 IdP。

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

请求正文

编辑
acs
(可选,字符串) 与 Elasticsearch 中应使用的 SAML 域之一匹配的断言使用者服务 URL。您必须指定此参数或 realm 参数。
query_string
(必填,字符串) 用户被 SAML IdP 重定向到以启动单点注销的 URL 的查询部分。此查询应包含一个名为 SAMLRequest 的参数,该参数包含已解压缩并以 Base64 编码的 SAML 注销请求。如果 SAML IdP 已对注销请求进行签名,则 URL 应包含另外两个名为 SigAlgSignature 的参数,这些参数分别包含用于签名的算法和签名值本身。为了让 Elasticsearch 能够验证 IdP 的签名,query_string 字段的值必须与浏览器提供的字符串完全匹配。客户端应用程序不得尝试以任何方式解析或处理该字符串。
queryString
[7.14.0] 已在 7.14.0 中弃用。请改用 query_string 请参阅 query_string
realm
(可选,字符串) Elasticsearch 配置中 SAML 域的名称。您必须指定此参数或 acs 参数。

响应正文

编辑
invalidated
(整数) 作为此注销的一部分而失效的令牌数。
realm
(字符串) Elasticsearch 中对用户进行身份验证的 SAML 域的域名称。
redirect
(字符串) SAML 注销响应作为参数,以便用户可以重定向回 SAML IdP。

示例

编辑

以下示例使与 SAML 注销请求中标识的用户相关的域 saml1 的所有令牌失效

resp = client.security.saml_invalidate(
    query_string="SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
    realm="saml1",
)
print(resp)
const response = await client.security.samlInvalidate({
  query_string:
    "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
  realm: "saml1",
});
console.log(response);
POST /_security/saml/invalidate
{
  "query_string" : "SAMLRequest=nZFda4MwFIb%2FiuS%2BmviRpqFaClKQdbvo2g12M2KMraCJ9cRR9utnW4Wyi13sMie873MeznJ1aWrnS3VQGR0j4mLkKC1NUeljjA77zYyhVbIE0dR%2By7fmaHq7U%2BdegXWGpAZ%2B%2F4pR32luBFTAtWgUcCv56%2Fp5y30X87Yz1khTIycdgpUW9kY7WdsC9zxoXTvMvWuVV98YyMnSGH2SYE5pwALBIr9QKiwDGpW0oGVUznGeMyJZKFkQ4jBf5HnhUymjIhzCAL3KNFihbYx8TBYzzGaY7EnIyZwHzCWMfiDnbRIftkSjJr%2BFu0e9v%2B0EgOquRiiZjKpiVFp6j50T4WXoyNJ%2FEWC9fdqc1t%2F1%2B2F3aUpjzhPiXpqMz1%2FHSn4A&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=MsAYz2NFdovMG2mXf6TSpu5vlQQyEJAg%2B4KCwBqJTmrb3yGXKUtIgvjqf88eCAK32v3eN8vupjPC8LglYmke1ZnjK0%2FKxzkvSjTVA7mMQe2AQdKbkyC038zzRq%2FYHcjFDE%2Bz0qISwSHZY2NyLePmwU7SexEXnIz37jKC6NMEhus%3D",
  "realm" : "saml1"
}
{
  "redirect" : "https://my-idp.org/logout/SAMLResponse=....",
  "invalidated" : 2,
  "realm" : "saml1"
}