LoginSignup
1
2

More than 1 year has passed since last update.

OpenID Connect prompt パラメータ概要とKeycloakを用いた動作確認 メモ

Posted at
  • OpenID ConnectのpromptパラメータとKeycloakを用いたパラメータ動作確認結果について個人用にメモしておく。

prompt パラメータ

  • 認可エンドポイントアクセス時に、ユーザー認証が行われる。
  • このユーザー認証処理をクライアントアプリから制御するためのパラメータ。
パラメータ 説明
none ユーザー認証や同意のための画面を表示させない。
認証と同意が事前に済んでいる場合、リクエストが成功する。
認証・同意が済んでいない場合、認可サーバーはエラーlogin_requiredinteraction_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
  • レスポンス

    • ログイン済み/未ログインの場合

    ※必ず以下のログイン画面が表示される。

    keycloak_login.png

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
  • レスポンス

    • 同意済み/同意未実施に依らず、下記画面が表示される。※クライアント設定で同意確認チェック必要

    keycloak_consent.png

prompt=select_accout

  • こちらにあるような振る舞いとなり上手く試せず...

参考情報

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2