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 相关功能。Kibana 内部使用这些 API 来提供基于 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" }