OpenID Connect 准备身份验证 API

编辑

OpenID Connect 准备身份验证 API编辑

根据 Elasticsearch 中相应 OpenID Connect 身份验证领域的配置,创建一个 oAuth 2.0 身份验证请求作为 URL 字符串。

请求编辑

POST /_security/oidc/prepare

描述编辑

此 API 的响应是一个指向已配置 OpenID Connect 提供程序的授权端点的 URL,可用于重定向用户的浏览器以继续身份验证过程。

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

请求正文编辑

可以在请求正文中指定以下参数

realm
(可选,字符串)Elasticsearch 中 OpenID Connect 领域的名称,应使用其配置来生成身份验证请求。当指定 iss 时,不能指定此参数。 realmiss 两者必须选其一。
state
(可选,字符串)用于维护身份验证请求和响应之间状态的值,通常用作跨站点请求伪造缓解措施。如果 API 的调用者未提供值,Elasticsearch 将自行生成一个具有足够熵的值并在响应中返回。
nonce
(可选,字符串)用于将客户端会话与 ID 令牌相关联并缓解重放攻击的值。如果 API 的调用者未提供值,Elasticsearch 将自行生成一个具有足够熵的值并在响应中返回。
iss
(可选,字符串)在第三方发起的单点登录的情况下,这是 RP 要向其发送身份验证请求的 OP 的颁发者标识符。当指定 realm 时,不能指定此参数。 realmiss 两者必须选其一。
login_hint
(可选,字符串)在第三方发起的单点登录的情况下,要包含在身份验证请求中的字符串值,作为 login_hint 参数。当指定 realm 时,此参数无效。

示例编辑

以下示例为 OpenID Connect 领域 oidc1 生成身份验证请求

POST /_security/oidc/prepare
{
  "realm" : "oidc1"
}

以下响应输出示例包含指向 OpenID Connect 提供程序的授权端点的 URI,其中包含身份验证请求的所有参数,作为 HTTP GET 参数

{
  "redirect" : "http://127.0.0.1:8080/c2id-login?scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I&nonce=WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM&client_id=elasticsearch-rp",
  "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
  "realm" : "oidc1"
}

以下示例为 OpenID Connect 领域 oidc1 生成身份验证请求,其中状态和随机数的值由客户端生成

POST /_security/oidc/prepare
{
  "realm" : "oidc1",
  "state" : "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
  "nonce" : "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5"
}

以下响应输出示例包含指向 OpenID Connect 提供程序的授权端点的 URI,其中包含身份验证请求的所有参数,作为 HTTP GET 参数

{
  "redirect" : "http://127.0.0.1:8080/c2id-login?scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO&nonce=zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5&client_id=elasticsearch-rp",
  "state" : "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
  "nonce" : "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5",
  "realm" : "oidc1"
}

以下示例为第三方发起的单点登录生成身份验证请求,指定应使用哪个颁发者来匹配相应的 OpenID Connect 身份验证领域

POST /_security/oidc/prepare
{
  "iss" : "http://127.0.0.1:8080",
  "login_hint": "this_is_an_opaque_string"
}

以下响应输出示例包含指向 OpenID Connect 提供程序的授权端点的 URI,其中包含身份验证请求的所有参数,作为 HTTP GET 参数

{
  "redirect" : "http://127.0.0.1:8080/c2id-login?login_hint=this_is_an_opaque_string&scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I&nonce=WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM&client_id=elasticsearch-rp",
  "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
  "realm" : "oidc1"
}