Janus Demo

Janus (https://janus.kashiwel.dev) でログインする Web アプリの見本です。ボタンを押すと、アプリと Janus のあいだで何をやり取りしたかを下の「記録」に順に出します。

はじめに (1 回だけ)
  1. Janus OTP を iPhone などで開き (ホーム画面に追加して)、Janus の /enroll に出る QR コードを「追加」→「カメラで QR を読む」で読んで、端末を登録します。ログインの承認はここに届きます
  2. Janus のパスキー で、Janus OTP で承認してからこの端末にパスキーを追加します (「金庫を開ける」で使います)
  3. 下の「ログイン」から始めます。ユーザー ID を入れてプッシュ承認するか、パスキーでログインします

いまのログイン

ログインしていません。

Janus でログイン

試す

  1. 1. ログイン

    PAR (RFC 9126) で依頼を Janus に預け、ブラウザは request_uri だけを持って /authorize へ。戻ってきたら state と iss (RFC 9207) を確かめ、PKCE の code_verifier を付けてコードをトークンに換えます。

    Janus でログイン
  2. 2. /userinfo を呼ぶ

    アクセストークンで OpenID Connect の UserInfo を呼びます。このアプリは janus-directory の管理外なので、返るのは sub だけです。

  3. 3. 金庫を開ける (パスキーが要る)

    プッシュ承認でログインしていると、401 と WWW-Authenticate: Bearer error="insufficient_user_authentication", acr_values="…" (RFC 9470) が返ります。acr_values を付けてログインし直すと、Janus はパスキーだけを出します。

  4. 4. 1,000 円を送る (その操作の承認が要る)

    ログインしているだけでは足りず、「Janus Demo Shop に 1,000 円送る」ことを承認したトークンが要ります。authorization_details (RFC 9396) を付けてログインし直すと、Janus のログイン画面と Janus OTP に内容が出ます。

  5. 5. 設定を変える (60 秒以内のログインが要る)

    auth_time が古いと、max_age の Step-Up を返します。重要な設定の前に本人に戻ってきてもらう形です。

記録

まだありません。

記録はこのブラウザのものだけを 1 時間置きます。トークンなどの長い値は途中で切って表示しています。ソース: examples/demo-web