SAML 身份验证 API
编辑SAML 身份验证 API
编辑提交 SAML Response
消息到 Elasticsearch 以供使用。
此 API 旨在供 Kibana 以外的自定义 Web 应用程序使用。 如果您正在使用 Kibana,请参阅在 Elastic Stack 上配置 SAML 单点登录。
请求
编辑POST /_security/saml/authenticate
描述
编辑提交的 SAML 消息可以是
- 对先前使用SAML 准备身份验证 API创建的 SAML 身份验证请求的响应。
- 在 IdP 发起的单点登录 (SSO) 流程情况下,可以是不请自来的 SAML 消息。
在这两种情况下,SAML 消息都需要是 base64 编码的 XML 文档,其根元素为 <Response>
成功验证后,Elasticsearch 会响应一个 Elasticsearch 内部访问令牌和刷新令牌,这些令牌可以随后用于身份验证。 此 API 端点本质上将 SAML 响应(表示在 IdP 中成功进行身份验证)交换为 Elasticsearch 访问和刷新令牌,这些令牌可用于针对 Elasticsearch 进行身份验证。
Elasticsearch 通过 SAML API 公开所有必要的 SAML 相关功能。 这些 API 在内部由 Kibana 使用,以提供基于 SAML 的身份验证,但也可以由其他自定义 Web 应用程序或其他客户端使用。另请参阅SAML 准备身份验证 API、SAML 使失效 API、SAML 注销 API和SAML 完成注销 API。
请求正文
编辑-
内容
- (必需,字符串)SAML 响应,就像用户浏览器发送的一样,通常是 Base64 编码的 XML 文档。
-
ids
- (必需,数组)一个 JSON 数组,其中包含 API 调用者针对当前用户的所有有效的 SAML 请求 ID。
-
realm
- (可选,字符串)应该验证 SAML 响应的 realm 的名称。在定义了许多 SAML realm 的情况下很有用。
响应正文
编辑-
access_token
- (字符串)Elasticsearch 生成的访问令牌。
-
username
- (字符串)已通过身份验证的用户的名称。
-
expires_in
- (整数)令牌过期前剩余的时间(以秒为单位)。
-
refresh_token
- (字符串)Elasticsearch 生成的刷新令牌。
-
realm
- (字符串)用户通过身份验证的 realm 的名称。
示例
编辑以下示例将 SAML 响应(指示在 SAML IdP 中成功进行身份验证)交换为 Elasticsearch 访问令牌和刷新令牌,以便在后续请求中使用
resp = client.security.saml_authenticate( content="PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....", ids=[ "4fee3b046395c4e751011e97f8900b5273d56685" ], ) print(resp)
const response = await client.security.samlAuthenticate({ content: "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....", ids: ["4fee3b046395c4e751011e97f8900b5273d56685"], }); console.log(response);
POST /_security/saml/authenticate { "content" : "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....", "ids" : ["4fee3b046395c4e751011e97f8900b5273d56685"] }
API 返回以下响应
{ "access_token" : "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3", "username" : "Bearer", "expires_in" : 1200, "refresh_token": "mJdXLtmvTUSpoLwMvdBt_w", "realm": "saml1" }