OpenID Connect セッション (質問時のドラフト 23)では、次のように述べています。
ログアウト エンドポイントで、OP はエンドユーザーに OP からもログアウトするかどうかを尋ねるべきです。エンドユーザーが「はい」と言った場合、OP はエンドユーザーをログアウトする必要があります。
したがって、ユーザーが [はい] をクリックすると、まだ OP の領域にいるので、ウェルカム画面に戻すことができます。ただし、ユーザーが「いいえ」をクリックすると、動作は定義されません。
私はそれが次のようなものになると推測しています:
state
RP アプリケーションのログアウト ボタンを押す前にユーザーが最後にアクセスしていた既知のページとします。- RP のログアウトは、ユーザーがトークン取り消しエンドポイントを使用して OP 上の RP に対して持っているすべての資格情報を破棄します (RP によって再同意が必要な場合)。
- 次に、それを渡して end_session_endpoint にリダイレクトします。
state
- OP end_session_endpoint に到達すると、ユーザーはたまたま「いいえ」を選択します
- ユーザーは OP からログアウトされません。
- ユーザーは、渡された状態で post_logout_redirect_uri にリダイレクトされます。
- RP にある post_redirect_uri は、ユーザーを状態の authentication_endpoint にリダイレクトします。
- ユーザーはまだ OP にログインしており、同意がまだ存在すると想定しているため、ユーザーがアプリケーションを離れていないかのように状態でユーザーを RP コールバックにリダイレクトする必要がありますが、id_token のまったく新しいセットが現在あります。
リダイレクト ループを防ぐために、RP は、ログアウトが存在しなくなった場合に有効な ID を必要としないことを保証する必要があります。そうしないと、リダイレクト ループが発生します。