SAML 完全ログアウト API

SAML IdP から送信されたログアウトレスポンスを検証します。

この API は、Kibana 以外のカスタム Web アプリケーションでの使用を目的としています。Kibana を使用している場合は、Elastic Stack での SAML シングルサインオンの設定を参照してください。

リクエスト

POST /_security/saml/complete_logout

説明

SAML IdP は、SP 主導の SAML シングルログアウトを処理した後、SP にログアウトレスポンスを送信する場合があります。この API は、コンテンツが関連していることを確認し、その署名を検証することによってレスポンスを検証します。検証プロセスが成功した場合、空のレスポンスが返されます。レスポンスは、HTTP-Redirect または HTTP-Post バインディングのいずれかで IdP によって送信される可能性があります。この API の呼び出し元は、これらのいずれかを処理できるようにリクエストを適切に準備する必要があります。

Elasticsearch は、SAML API を介して必要なすべての SAML 関連機能を公開しています。これらの API は、Kibana によって内部的に使用され、SAML ベースの認証を提供しますが、他のカスタム Web アプリケーションや他のクライアントでも使用できます。SAML 認証 APISAML 認証準備 APISAML 無効化 API、および SAML ログアウト APIも参照してください。

リクエストボディ

  • realm
  • (必須、文字列) ログアウトレスポンスを検証するために使用される Elasticsearch の SAML レルムの名前。
  • ids
  • (必須、配列) 現在のユーザーに対して API の呼び出し元が持つすべての有効な SAML リクエスト ID を含む JSON 配列。
  • query_string
  • (オプション、文字列) SAML IdP が HTTP-Redirect バインディングでログアウトレスポンスを送信する場合、このフィールドはリダイレクト URI のクエリ文字列に設定する必要があります。
  • queryString
  • [7.14.0] 7.14.0 で非推奨。代わりに query_string を使用してください query_string を参照してください。
  • content
  • (オプション、文字列) SAML IdP が HTTP-Post バインディングでログアウトレスポンスを送信する場合、このフィールドはログアウトレスポンスの SAMLResponse フォームパラメータの値に設定する必要があります。

以下の例は、HTTP-Redirect バインディングを使用して SAML IdP から送信されたログアウトレスポンスを検証します:

Python

  1. resp = client.security.saml_complete_logout(
  2. realm="saml1",
  3. ids=[
  4. "_1c368075e0b3..."
  5. ],
  6. query_string="SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
  7. )
  8. print(resp)

Js

  1. const response = await client.security.samlCompleteLogout({
  2. realm: "saml1",
  3. ids: ["_1c368075e0b3..."],
  4. query_string:
  5. "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK...",
  6. });
  7. console.log(response);

コンソール

  1. POST /_security/saml/complete_logout
  2. {
  3. "realm": "saml1",
  4. "ids": [ "_1c368075e0b3..." ],
  5. "query_string": "SAMLResponse=fZHLasMwEEVbfb1bf...&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=CuCmFn%2BLqnaZGZJqK..."
  6. }

HTTP-Post バインディングでログアウトレスポンスが送信された場合、次のように検証できます:

Python

  1. resp = client.security.saml_complete_logout(
  2. realm="saml1",
  3. ids=[
  4. "_1c368075e0b3..."
  5. ],
  6. content="PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46...",
  7. )
  8. print(resp)

Js

  1. const response = await client.security.samlCompleteLogout({
  2. realm: "saml1",
  3. ids: ["_1c368075e0b3..."],
  4. content: "PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46...",
  5. });
  6. console.log(response);

コンソール

  1. POST /_security/saml/complete_logout
  2. {
  3. "realm": "saml1",
  4. "ids": [ "_1c368075e0b3..." ],
  5. "content": "PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46..."
  6. }

API は成功時に空のレスポンスを返します。