- OpenID Connectの
prompt
パラメータとKeycloakを用いたパラメータ動作確認結果について個人用にメモしておく。
prompt
パラメータ
- 認可エンドポイントアクセス時に、ユーザー認証が行われる。
- このユーザー認証処理をクライアントアプリから制御するためのパラメータ。
パラメータ | 説明 |
---|---|
none |
ユーザー認証や同意のための画面を表示させない。 認証と同意が事前に済んでいる場合、リクエストが成功する。 認証・同意が済んでいない場合、認可サーバーはエラー login_required 、interaction_required を返却する。 |
login |
認証済みの場合も、ユーザー認証を実施させる(再認証)。 再認証できない場は、認可サーバーはエラー login_required を返却する。 |
consent |
同意済みの場合も、同意確認を実施させる。 同意を取得できない場合、認可サーバーはエラー consent_required を返却させる。 |
select_account |
複数のユーザーアカウントから選択することを要求する。 ユーザーによるアカウント選択がなされない場合、認可サーバーはエラー account_selection_required を返却する。 |
Keycloakを用いた動作確認
prompt=none
- リクエスト
http://localhost:8080/auth/realms/master/protocol/openid-connect/auth?client_id=python-client&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Fcallback%2F&state=322ad1e19de68972457a7f2810fdcf515f4b7de8c9bf8a1605c8392307033720&scope=openid&response_type=code&prompt=none&response_mode=query.jwt&code_challenge=abBCq_ZdER-W-reLmyh4KN7nBNcVPJqAb5vhRK0yVdI&code_challenge_method=S256
-
レスポンス
- ログイン済みの場合
※ログイン画面を表示せず、認可レスポンスが返却される。
http://localhost:8000/auth/callback/?response=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia...8ExBggOdRFHw
- 未ログインの場合
http://localhost:8000/auth/callback?response=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldU...Qe1DTH1g
-
response
ペイロード
※エラー
login_required
が設定される。{ "exp": 1645577786, "iss": "http://localhost:8080/auth/realms/master", "aud": "python-client", "state": "322ad1e19de68972457a7f2810fdcf515f4b7de8c9bf8a1605c8392307033720", "error": "login_required" }
prompt=login
- リクエスト
http://localhost:8080/auth/realms/master/protocol/openid-connect/auth?client_id=python-client&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Fcallback%2F&state=944acbac8d6863511e105b492e6aae42a9eb4ad40d368510372c9581f0545b3a&scope=openid&response_type=code&prompt=login&response_mode=query.jwt&code_challenge=XUTHhq7aTrSxLHbrjNrvaX73K-rjKJK7aHgCY04oMOw&code_challenge_method=S256
prompt=consent
- リクエスト
http://localhost:8080/auth/realms/master/protocol/openid-connect/auth?client_id=python-client&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Fcallback%2F&state=e8bd083e2b9ae45c5e1159820fa9bbe46d76b418c9999a0b0fd5df9fe1cd7992&scope=openid&response_type=code&prompt=consent&response_mode=query.jwt&code_challenge=0bpCd7y_zIm_MDHFio2XPYMFaU02j0oEXHAEucvMrho&code_challenge_method=S256
prompt=select_accout
- こちらにあるような振る舞いとなり上手く試せず...