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 身份验证 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
生成身份验证请求
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" }