OpenID Connect 认证 API
编辑OpenID Connect 认证 API
编辑提交对 OAuth 2.0 身份验证请求的响应,以便 Elasticsearch 使用。成功验证后,Elasticsearch 将响应一个 Elasticsearch 内部访问令牌和刷新令牌,该令牌可随后用于身份验证。
请求
编辑POST /_security/oidc/authenticate
描述
编辑此 API 端点基本上将成功的 OpenID Connect 身份验证响应交换为用于身份验证的 Elasticsearch 访问令牌和刷新令牌。
Elasticsearch 通过 OpenID Connect API 公开所有必要的 OpenID Connect 相关功能。 这些 API 由 Kibana 内部使用,以提供基于 OpenID Connect 的身份验证,但也可以由其他自定义 Web 应用程序或其他客户端使用。另请参阅 OpenID Connect 准备认证 API 和 OpenID Connect 注销 API
请求体
编辑-
redirect_uri
- (必需,字符串)在成功身份验证后,OpenID Connect 提供商将用户代理重定向到的 URL,以响应身份验证请求。 预计此 URL 将按原样提供(URL 编码),从响应正文中获取,或作为 OpenID Connect 提供商响应中的
Location
标头的值。 -
state
- (必需,字符串)用于维护身份验证请求和响应之间的状态。此值需要与先前对
/_security/oidc/prepare
的调用提供的值相同,或者是 Elasticsearch 生成并包含在该调用响应中的值。 -
nonce
- (必需,字符串)用于将客户端会话与 ID 令牌关联,并缓解重放攻击。此值需要与先前对
/_security/oidc/prepare
的调用提供的值相同,或者是 Elasticsearch 生成并包含在该调用响应中的值。 -
realm
- (可选,字符串)用于标识应用于进行此身份验证的 OpenID Connect 域的名称。在定义了多个域时很有用。
示例
编辑以下示例请求将从 OpenID Connect 提供商返回的响应(在成功身份验证后)交换为 Elasticsearch 访问令牌和刷新令牌,以便在后续请求中使用。此示例来自使用授权代码授予流程的身份验证。
resp = client.security.oidc_authenticate( body={ "redirect_uri": "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I", "state": "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I", "nonce": "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM", "realm": "oidc1" }, ) print(resp)
const response = await client.security.oidcAuthenticate({ body: { redirect_uri: "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I", state: "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I", nonce: "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM", realm: "oidc1", }, }); console.log(response);
POST /_security/oidc/authenticate { "redirect_uri" : "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I", "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I", "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM", "realm" : "oidc1" }
以下示例输出包含响应中生成的访问令牌、令牌过期的时长(以秒为单位)、类型和刷新令牌
{ "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==", "type" : "Bearer", "expires_in" : 1200, "refresh_token": "vLBPvmAB6KvwvJZr27cS" }