メインコンテンツまでスキップ
プレビュー版
PocketSign Link v2 は現在プレビュー版です。正式提供までに仕様が変更される可能性があります。

再認証と ACR / AMR

KLON では、重要操作や高い本人確認が必要な場面で、認可リクエストの途中に再認証を要求できます。

再認証が必要になる条件

authorize 実行時に、次のいずれかに当てはまると再認証に進みます。

  • prompt=login が指定された
  • max_age を超えている
  • 現在のセッションの ACR が要求 ACR を満たしていない

prompt=none の場合は再認証 UI を表示できないため、状況に応じて次のエラーが返ります。

状況結果
未ログインlogin_required
再認証が必要interaction_required
同意が必要consent_required

ACR

PocketSign Link v2 で扱う主な ACR は以下の 3 段階です。

ACR意味
urn:klon:acr:lowメール OTP などの低強度認証
urn:klon:acr:highJPKI 利用者証明相当
urn:klon:acr:very_highJPKI 署名用証明書相当

上位の ACR は下位の ACR を包含します。

AMR

PocketSign Link v2 のトークンやセッションに反映される代表的な AMR は以下の通りです。

AMR意味
otpメール OTP
jpkiJPKI による認証(利用者証明用電子証明書 または 署名用電子証明書)
jpki_card_user_authn利用者証明用電子証明書
jpki_card_digital_sig署名用電子証明書

acr_valuesclaims.id_token.acr

実効的な要求 ACR は次の優先順位で決まります。

  1. claims.id_token.acr の必須要求
  2. acr_values
  3. クライアント既定値

再認証要否の判定は、要求リストの中で最も弱い ACR を基準に行います。 一方で、UI 上は acr_values の先頭が優先候補として扱われるため、候補の並び順で見え方が変わることがあります。

再認証手段

PocketSign Link v2 はユーザーの状態と要求 ACR に応じて、次の再認証手段を提示します。

手段条件結果の ACR結果の AMR
Email + OTPメールアドレスがあり、low で足りるurn:klon:acr:lowotp
利用者証明用電子証明書による再認証JPKI 連携があり、high で足りるurn:klon:acr:highjpki, jpki_card_user_authn
署名用電子証明書による再認証常に候補になりうるurn:klon:acr:very_highjpki, jpki_card_digital_sig

jpki_sign は、JPKI 未連携ユーザーにも提示されることがあります。 成功時には、現在ログイン中のユーザーに JPKI 連携を作成または更新できるためです。 一方で、別ユーザーのカード提示は失敗として扱われます。

手段選択マトリクス

ユーザー状態と要求 ACR の組み合わせによる手段の候補は次の通りです。

ユーザー状態 / 要求Email + OTP利用者証明用電子証明書署名用電子証明書
メールアドレスあり + low で足りる
JPKI 連携あり + high で足りる
JPKI 未連携 + high が必要
very_high が必要

メール OTP による再認証

メール再認証では、その認可フローを継続中のユーザーのメールアドレス宛に OTP を送信します。

ポイント

  • OTP の有効期限は短く、試行回数にも上限があります
  • 成功すると現在の ps_sid セッションが更新され、acr=lowamr=otp が記録されます
  • 完了後は認可フローが再開されます

JPKI による再認証

JPKI 再認証は、マイナポータルアプリ連携を使って実行されます。

jpki

  • 利用者証明用電子証明書で再認証します
  • 既存の JPKI 連携があることが前提です
  • 成功すると acr=high が記録されます

jpki_sign

  • 署名用電子証明書で再認証します
  • JPKI 未連携でも開始できます
  • 成功すると acr=very_high が記録されます
  • 別ユーザーのカードが提示された場合は失敗します

再認証フロー

注意点

  • prompt=login は必ずしもログアウトを意味しません。既存セッションを維持したまま再認証だけを行います
  • 再認証が失敗しても、元のログインセッションが直ちに破棄されるわけではありません
  • 要求 ACR を満たす手段が存在しない場合は、認可成功には進めません
  • 要求 ACR は「最小必要強度」と「UI 上で優先したい強度」を分けて考えてください
  • prompt=none と再認証要求の組み合わせではエラー分岐の実装が必要です
  • merge など追加権限要求と再認証要求が同時に起こる場合もあります