Janus (https://janus.kashiwel.dev) でログインする Web アプリの見本です。ボタンを押すと、アプリと Janus のあいだで何をやり取りしたかを下の「記録」に順に出します。
ログインしていません。
Janus でログインPAR (RFC 9126) で依頼を Janus に預け、ブラウザは request_uri だけを持って /authorize へ。戻ってきたら state と iss (RFC 9207) を確かめ、PKCE の code_verifier を付けてコードをトークンに換えます。
アクセストークンで OpenID Connect の UserInfo を呼びます。このアプリは janus-directory の管理外なので、返るのは sub だけです。
プッシュ承認でログインしていると、401 と WWW-Authenticate: Bearer error="insufficient_user_authentication", acr_values="…" (RFC 9470) が返ります。acr_values を付けてログインし直すと、Janus はパスキーだけを出します。
ログインしているだけでは足りず、「Janus Demo Shop に 1,000 円送る」ことを承認したトークンが要ります。authorization_details (RFC 9396) を付けてログインし直すと、Janus のログイン画面と Janus OTP に内容が出ます。
auth_time が古いと、max_age の Step-Up を返します。重要な設定の前に本人に戻ってきてもらう形です。
まだありません。
記録はこのブラウザのものだけを 1 時間置きます。トークンなどの長い値は途中で切って表示しています。ソース: examples/demo-web