OpenID Connect 認証 API の準備
Elasticsearch のそれぞれの OpenID Connect 認証レルムの設定に基づいて、oAuth 2.0 認証リクエストを URL 文字列として作成します。
リクエスト
POST /_security/oidc/prepare
説明
この API の応答は、構成された OpenID Connect プロバイダーの認可エンドポイントを指す URL であり、ユーザーのブラウザをリダイレクトして認証プロセスを続行するために使用できます。
Elasticsearch は、OpenID Connect API を介して必要なすべての OpenID Connect 関連機能を公開しています。これらの API は、OpenID Connect ベースの認証を提供するために Kibana によって内部的に使用されますが、他のカスタム Web アプリケーションや他のクライアントでも使用できます。 OpenID Connect 認証 API および OpenID Connect ログアウト API も参照してください。
リクエストボディ
リクエストのボディに指定できるパラメータは次のとおりです:
realm
- (オプション、文字列)認証リクエストを生成するために使用する Elasticsearch の OpenID Connect レルムの名前。
iss
が指定されている場合は指定できません。realm
またはiss
のいずれかが必要です。 state
- (オプション、文字列)認証リクエストと応答の間で状態を維持するために使用される値で、通常はクロスサイトリクエストフォージェリの軽減に使用されます。API の呼び出し元が値を提供しない場合、Elasticsearch は十分なエントロピーを持つ値を自動的に生成し、応答に返します。
nonce
- (オプション、文字列)クライアントセッションを ID トークンに関連付け、リプレイ攻撃を軽減するために使用される値。API の呼び出し元が値を提供しない場合、Elasticsearch は十分なエントロピーを持つ値を自動的に生成し、応答に返します。
iss
- (オプション、文字列)サードパーティが開始したシングルサインオンの場合、RP が認証リクエストを送信する OP の発行者識別子です。
realm
が指定されている場合は指定できません。realm
またはiss
のいずれかが必要です。 login_hint
- (オプション、文字列)サードパーティが開始したシングルサインオンの場合、認証リクエストに含める文字列値で、
login_hint
パラメータとして使用されます。realm
が指定されている場合、このパラメータは無効です。
例
次の例は、OpenID Connect レルム oidc1
の認証リクエストを生成します:
Python
resp = client.security.oidc_prepare_authentication(
body={
"realm": "oidc1"
},
)
print(resp)
Js
const response = await client.security.oidcPrepareAuthentication({
body: {
realm: "oidc1",
},
});
console.log(response);
コンソール
POST /_security/oidc/prepare
{
"realm" : "oidc1"
}
次の例の応答出力には、すべての認証リクエストのパラメータを HTTP GET パラメータとして持つ OpenID Connect プロバイダーの認可エンドポイントを指す URI が含まれています:
コンソール-結果
{
"redirect" : "http://127.0.0.1:8080/c2id-login?scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I&nonce=WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM&client_id=elasticsearch-rp",
"state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
"nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
"realm" : "oidc1"
}
次の例は、クライアントによって生成された状態とノンスの値を持つ OpenID Connect レルム oidc1
の認証リクエストを生成します:
Python
resp = client.security.oidc_prepare_authentication(
body={
"realm": "oidc1",
"state": "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
"nonce": "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5"
},
)
print(resp)
Js
const response = await client.security.oidcPrepareAuthentication({
body: {
realm: "oidc1",
state: "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
nonce: "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5",
},
});
console.log(response);
コンソール
POST /_security/oidc/prepare
{
"realm" : "oidc1",
"state" : "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
"nonce" : "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5"
}
次の例の応答出力には、すべての認証リクエストのパラメータを HTTP GET パラメータとして持つ OpenID Connect プロバイダーの認可エンドポイントを指す URI が含まれています:
コンソール-結果
{
"redirect" : "http://127.0.0.1:8080/c2id-login?scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO&nonce=zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5&client_id=elasticsearch-rp",
"state" : "lGYK0EcSLjqH6pkT5EVZjC6eIW5YCGgywj2sxROO",
"nonce" : "zOBXLJGUooRrbLbQk5YCcyC8AXw3iloynvluYhZ5",
"realm" : "oidc1"
}
次の例は、適切な OpenID Connect 認証レルムと一致させるために使用される発行者を指定して、サードパーティが開始したシングルサインオンの認証リクエストを生成します:
Python
resp = client.security.oidc_prepare_authentication(
body={
"iss": "http://127.0.0.1:8080",
"login_hint": "this_is_an_opaque_string"
},
)
print(resp)
Js
const response = await client.security.oidcPrepareAuthentication({
body: {
iss: "http://127.0.0.1:8080",
login_hint: "this_is_an_opaque_string",
},
});
console.log(response);
コンソール
POST /_security/oidc/prepare
{
"iss" : "http://127.0.0.1:8080",
"login_hint": "this_is_an_opaque_string"
}
次の例の応答出力には、すべての認証リクエストのパラメータを HTTP GET パラメータとして持つ OpenID Connect プロバイダーの認可エンドポイントを指す URI が含まれています:
コンソール-結果
{
"redirect" : "http://127.0.0.1:8080/c2id-login?login_hint=this_is_an_opaque_string&scope=openid&response_type=id_token&redirect_uri=https%3A%2F%2Fmy.fantastic.rp%2Fcb&state=4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I&nonce=WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM&client_id=elasticsearch-rp",
"state" : "4dbrihtIAt3wBTwo6DxK-vdk-sSyDBV8Yf0AjdkdT5I",
"nonce" : "WaBPH0KqPVdG5HHdSxPRjfoZbXMCicm5v1OiAj0DUFM",
"realm" : "oidc1"
}