SAML認証API
SAML Response
メッセージを Elasticsearch に送信して処理します。
このAPIは、Kibana以外のカスタムWebアプリケーションでの使用を目的としています。Kibanaを使用している場合は、Elastic StackでのSAMLシングルサインオンの設定を参照してください。
リクエスト
POST /_security/saml/authenticate
説明
送信されるSAMLメッセージは次のいずれかです:
- 以前にSAML認証準備APIを使用して作成されたSAML認証リクエストへの応答。
- IdP主導のシングルサインオン(SSO)フローの場合の未請求のSAMLメッセージ。
いずれの場合も、SAMLメッセージは<Response>
のルート要素を持つbase64エンコードされたXMLドキュメントである必要があります。
成功した検証の後、ElasticsearchはElasticsearch内部アクセストークンとリフレッシュトークンで応答し、これらはその後の認証に使用できます。このAPIエンドポイントは、IdPでの成功した認証を示すSAML応答をElasticsearchのアクセストークンとリフレッシュトークンに交換します。これらはElasticsearchに対する認証に使用できます。
Elasticsearchは、SAML APIを介して必要なすべてのSAML関連機能を公開しています。これらのAPIは、KibanaがSAMLベースの認証を提供するために内部で使用されますが、他のカスタムWebアプリケーションや他のクライアントでも使用できます。SAML認証準備API、SAML無効化API、SAMLログアウトAPI、およびSAML完全ログアウトAPIも参照してください。
リクエストボディ
content
- (必須、文字列) ユーザーのブラウザによって送信されたSAML応答、通常はBase64エンコードされたXMLドキュメントです。
ids
- (必須、配列) APIの呼び出し元が現在のユーザーに対して持っているすべての有効なSAMLリクエストIDを含むJSON配列。
realm
- (オプション、文字列) SAML応答を認証する必要があるレルムの名前。多くのSAMLレルムが定義されている場合に便利です。
レスポンスボディ
access_token
- (文字列) Elasticsearchによって生成されたアクセストークン。
username
- (文字列) 認証されたユーザーの名前。
expires_in
- (整数) トークンの有効期限までの残り時間(秒)。
refresh_token
- (文字列) Elasticsearchによって生成されたリフレッシュトークン。
realm
- (文字列) ユーザーが認証されたレルムの名前。
例
以下の例は、SAML IdPでの成功した認証を示すSAML応答をElasticsearchのアクセストークンとリフレッシュトークンに交換し、その後のリクエストで使用する方法を示しています:
Python
resp = client.security.saml_authenticate(
content="PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
ids=[
"4fee3b046395c4e751011e97f8900b5273d56685"
],
)
print(resp)
Js
const response = await client.security.samlAuthenticate({
content:
"PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
ids: ["4fee3b046395c4e751011e97f8900b5273d56685"],
});
console.log(response);
コンソール
POST /_security/saml/authenticate
{
"content" : "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMD.....",
"ids" : ["4fee3b046395c4e751011e97f8900b5273d56685"]
}
APIは次のようなレスポンスを返します:
Js
{
"access_token" : "46ToAxZVaXVVZTVKOVF5YU04ZFJVUDVSZlV3",
"username" : "Bearer",
"expires_in" : 1200,
"refresh_token": "mJdXLtmvTUSpoLwMvdBt_w",
"realm": "saml1"
}