SAML 認証 API の準備

Elasticsearch のそれぞれの SAML レルムの設定に基づいて、URL 文字列として SAML 認証リクエスト (<AuthnRequest>) を作成します。

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

リクエスト

POST /_security/saml/prepare

説明

この API は、SAML ID プロバイダーを指す URL を返します。この URL を使用して、ユーザーのブラウザをリダイレクトし、認証プロセスを続行できます。URL には、SAMLRequest という名前の単一のパラメータが含まれており、これはデフレートされ、Base64 エンコードされた SAML 認証リクエストを含みます。設定により SAML 認証リクエストに署名が必要な場合、URL には SigAlg および Signature という名前の 2 つの追加パラメータがあります。これらのパラメータには、署名に使用されるアルゴリズムと署名値自体が含まれています。また、この SAML 認証リクエストを一意に識別するランダムな文字列も返します。この API の呼び出し元は、この識別子を保存する必要があります。これは、認証プロセスの次のステップで使用する必要があります(SAML 認証 API を参照)。

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

リクエストボディ

  • acs
  • (オプション、文字列) Elasticsearch の SAML レルムの 1 つと一致するアサーション消費者サービス URL。レルムは認証リクエストを生成するために使用されます。このパラメータまたは realm パラメータのいずれかを指定する必要があります。
  • realm
  • (オプション、文字列) 認証リクエストを生成するために使用される Elasticsearch の SAML レルムの名前。このパラメータまたは acs パラメータのいずれかを指定する必要があります。
  • relay_state
  • (オプション、文字列) この API が返すリダイレクト URL に RelayState クエリパラメータとして含まれる文字列。認証リクエストが署名されている場合、この値は署名計算の一部として使用されます。

レスポンスボディ

  • id
  • (文字列) API の呼び出し元によって保存される SAML リクエストの一意の識別子。
  • realm
  • (文字列) 認証リクエストを構築するために使用された Elasticsearch のレルムの名前。
  • redirect
  • (文字列) ユーザーをリダイレクトするための URL。

次の例は、名前が saml1 の SAML レルムのための SAML 認証リクエストを生成します。

Python

  1. resp = client.security.saml_prepare_authentication(
  2. realm="saml1",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.samlPrepareAuthentication({
  2. realm: "saml1",
  3. });
  4. console.log(response);

コンソール

  1. POST /_security/saml/prepare
  2. {
  3. "realm" : "saml1"
  4. }

次の例は、アサーション消費サービス URL が https://kibana.org/api/security/saml/callback と一致する SAML レルムのための SAML 認証リクエストを生成します。

Python

  1. resp = client.security.saml_prepare_authentication(
  2. acs="https://kibana.org/api/security/saml/callback",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.samlPrepareAuthentication({
  2. acs: "https://kibana.org/api/security/saml/callback",
  3. });
  4. console.log(response);

コンソール

  1. POST /_security/saml/prepare
  2. {
  3. "acs" : "https://kibana.org/api/security/saml/callback"
  4. }

この API は、次のレスポンスを返します:

Js

  1. {
  2. "redirect": "https://my-idp.org/login?SAMLRequest=fVJdc6IwFP0rmbwDgUKLGbFDtc462%2B06FX3Yl50rBJsKCZsbrPbXL6J22hdfk%2FNx7zl3eL%2BvK7ITBqVWCfVdRolQuS6k2iR0mU2dmN6Phgh1FTQ8be2rehH%2FWoGWdESF%2FPST0NYorgElcgW1QG5zvkh%2FPfHAZbwx2upcV5SkiMLYzmqsFba1MAthdjIXy5enhL5a23DPOyo6W7kGBa7cwhZ2gO7G8OiW%2BR400kORt0bag7fzezAlk24eqcD2OxxlsNN5O3MdsW9c6CZnbq7rntF4d3s0D7BaHTZhIWN52P%2BcjiuGRbDU6cdj%2BEjJbJLQv4N4ADdhxBiEZbQuWclY4Q8iABbCXczCdSiKMAC%2FgyO2YqbQgrIJDZg%2FcFjsMD%2Fzb3gUcBa5sR%2F9oWR%2BzuJBqlPG14Jbn0DIf2TZ3Jn%2FXmSUrC5ddQB6bob37uZrJdeF4dIDHV3iuhb70Ptq83kOz53ubDLXlcwPJK0q%2FT42AqxIaAkVCkqm2tRgr49yfJGFU%2FZQ3hy3QyuUpd7obPv97kb%2FAQ%3D%3D"}",
  3. "realm": "saml1",
  4. "id": "_989a34500a4f5bf0f00d195aa04a7804b4ed42a1"
  5. }