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 認証 API、SAML 無効化 API、SAML ログアウト 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
resp = client.security.saml_prepare_authentication(
realm="saml1",
)
print(resp)
Js
const response = await client.security.samlPrepareAuthentication({
realm: "saml1",
});
console.log(response);
コンソール
POST /_security/saml/prepare
{
"realm" : "saml1"
}
次の例は、アサーション消費サービス URL が https://kibana.org/api/security/saml/callback
と一致する SAML レルムのための SAML 認証リクエストを生成します。
Python
resp = client.security.saml_prepare_authentication(
acs="https://kibana.org/api/security/saml/callback",
)
print(resp)
Js
const response = await client.security.samlPrepareAuthentication({
acs: "https://kibana.org/api/security/saml/callback",
});
console.log(response);
コンソール
POST /_security/saml/prepare
{
"acs" : "https://kibana.org/api/security/saml/callback"
}
この API は、次のレスポンスを返します:
Js
{
"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"}",
"realm": "saml1",
"id": "_989a34500a4f5bf0f00d195aa04a7804b4ed42a1"
}