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 相关功能。这些 API 在内部被 Kibana 使用,以提供基于 OpenID Connect 的身份验证,但也可以被其他自定义 Web 应用程序或其他客户端使用。另请参阅OpenID Connect 身份验证 API和OpenID Connect 注销 API。
请求体
编辑以下参数可以在请求体中指定
-
realm
- (可选,字符串)Elasticsearch 中 OpenID Connect 域的名称,其配置应用于生成身份验证请求。当指定
iss
时,不能指定。realm
和iss
必须指定其中一个。 -
state
- (可选,字符串)用于维护身份验证请求和响应之间状态的值,通常用作跨站点请求伪造缓解措施。如果 API 的调用者没有提供值,Elasticsearch 将自行生成一个具有足够熵的值并在响应中返回。
-
nonce
- (可选,字符串)用于将客户端会话与 ID 令牌相关联并缓解重放攻击的值。如果 API 的调用者没有提供值,Elasticsearch 将自行生成一个具有足够熵的值并在响应中返回。
-
iss
- (可选,字符串)在第三方发起的单点登录的情况下,这是 RP 要将身份验证请求发送到的 OP 的发行者标识符。当指定
realm
时,不能指定。realm
和iss
必须指定其中一个。 -
login_hint
- (可选,字符串)在第三方发起的单点登录的情况下,要包含在身份验证请求中的字符串值,作为
login_hint
参数。当指定realm
时,此参数无效。
示例
编辑以下示例为 OpenID Connect 域 oidc1
生成身份验证请求
resp = client.security.oidc_prepare_authentication( body={ "realm": "oidc1" }, ) print(resp)
const response = await client.security.oidcPrepareAuthentication({ body: { realm: "oidc1", }, }); console.log(response);
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
生成身份验证请求,其中 state 和 nonce 的值由客户端生成
resp = client.security.oidc_prepare_authentication( body={ "realm": "oidc1", "state": "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO", "nonce": "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5" }, ) print(resp)
const response = await client.security.oidcPrepareAuthentication({ body: { realm: "oidc1", state: "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO", nonce: "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5", }, }); console.log(response);
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 身份验证域的发行者
resp = client.security.oidc_prepare_authentication( body={ "iss": "http://127.0.0.1:8080", "login_hint": "this_is_an_opaque_string" }, ) print(resp)
const response = await client.security.oidcPrepareAuthentication({ body: { iss: "http://127.0.0.1:8080", login_hint: "this_is_an_opaque_string", }, }); console.log(response);
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" }