OpenID Connect authenticate API

Elasticsearch からの消費のために、oAuth 2.0 認証リクエストへの応答を送信します。検証が成功すると、Elasticsearch は内部のアクセストークンとリフレッシュトークンを返し、これらはその後の認証に使用できます。

Request

POST /_security/oidc/authenticate

Description

この API エンドポイントは、成功した OpenID Connect 認証応答を Elasticsearch アクセストークンおよびリフレッシュトークンと交換し、認証に使用します。

Elasticsearch は、OpenID Connect API を介して必要なすべての OpenID Connect 関連機能を公開しています。これらの API は、Kibana によって内部的に使用され、OpenID Connect ベースの認証を提供しますが、他のカスタム Web アプリケーションやクライアントでも使用できます。詳細については、OpenID Connect prepare authentication API および OpenID Connect logout API を参照してください。

Request body

  • redirect_uri
  • (必須、文字列) 認証リクエストに応じて OpenID Connect プロバイダーがユーザーエージェントをリダイレクトした URL。成功した認証後にこの URL がそのまま(URL エンコードされた状態で)提供されることが期待されます。これは応答の本文から取得するか、OpenID Connect プロバイダーからの応答の Location ヘッダーの値として提供されます。
  • state
  • (必須、文字列) 認証リクエストと応答の間で状態を維持するために使用されます。この値は、以前の /_security/oidc/prepare への呼び出しに提供されたものと同じである必要があります。または、Elasticsearch によって生成され、呼び出しへの応答に含まれているものです。
  • nonce
  • (必須、文字列) クライアントセッションを ID トークンに関連付け、リプレイ攻撃を軽減するために使用されます。この値は、以前の /_security/oidc/prepare への呼び出しに提供されたものと同じである必要があります。または、Elasticsearch によって生成され、呼び出しへの応答に含まれているものです。
  • realm
  • (オプション、文字列) 認証に使用されるべき OpenID Connect レルムの名前を識別するために使用されます。複数のレルムが定義されている場合に便利です。

Examples

以下の例リクエストは、成功した認証後に OpenID Connect プロバイダーから返された応答を、Elasticsearch アクセストークンおよびリフレッシュトークンと交換し、以降のリクエストで使用します。この例は、認可コードグラントフローを使用した認証からのものです。

Python

  1. resp = client.security.oidc_authenticate(
  2. body={
  3. "redirect_uri": "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  4. "state": "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  5. "nonce": "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
  6. "realm": "oidc1"
  7. },
  8. )
  9. print(resp)

Js

  1. const response = await client.security.oidcAuthenticate({
  2. body: {
  3. redirect_uri:
  4. "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  5. state: "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  6. nonce: "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
  7. realm: "oidc1",
  8. },
  9. });
  10. console.log(response);

Console

  1. POST /_security/oidc/authenticate
  2. {
  3. "redirect_uri" : "https://oidc-kibana.elastic.co:5603/api/security/oidc/callback?code=jtI3Ntt8v3_XvcLzCFGq&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  4. "state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
  5. "nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
  6. "realm" : "oidc1"
  7. }

以下の例出力には、応答として生成されたアクセストークン、トークンの有効期限(秒単位)、タイプ、およびリフレッシュトークンが含まれています:

Js

  1. {
  2. "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
  3. "type" : "Bearer",
  4. "expires_in" : 1200,
  5. "refresh_token": "vLBPvmAB6KvwvJZr27cS"
  6. }