プレビュー版
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:high | JPKI 利用者証明相当 |
urn:klon:acr:very_high | JPKI 署名用証明書相当 |
上位の ACR は下位の ACR を包含します。
AMR
PocketSign Link v2 のトークンやセッションに反映される代表的な AMR は以下の通りです。
| AMR | 意味 |
|---|---|
otp | メール OTP |
jpki | JPKI による認証(利用者証明用電子証明書 または 署名用電子証明書) |
jpki_card_user_authn | 利用者証明用電子証明書 |
jpki_card_digital_sig | 署名用電子証明書 |
acr_values と claims.id_token.acr
実効的な要求 ACR は次の優先順位で決まります。
claims.id_token.acrの必須要求acr_values- クライアント既定値
再認証要否の判定は、要求リストの中で最も弱い ACR を基準に行います。
一方で、UI 上は acr_values の先頭が優先候補として扱われるため、候補の並び順で見え方が変わることがあります。
再認証手段
PocketSign Link v2 はユーザーの状態と要求 ACR に応じて、次の再認証手段を提示します。
| 手段 | 条件 | 結果の ACR | 結果の AMR |
|---|---|---|---|
| Email + OTP | メールアドレスがあり、low で足りる | urn:klon:acr:low | otp |
| 利用者証明用電子証明書による再認証 | JPKI 連携があり、high で足りる | urn:klon:acr:high | jpki, jpki_card_user_authn |
| 署名用電子証明書による再認証 | 常に候補になりうる | urn:klon:acr:very_high | jpki, jpki_card_digital_sig |
jpki_sign は、JPKI 未連携ユーザーにも提示されることがあります。
成功時には、現在ログイン中のユーザーに JPKI 連携を作成または更新できるためです。
一方で、別ユーザーのカード提示は失敗として扱われます。
手段選択マトリクス
ユーザー状態と要求 ACR の組み合わせによる手段の候補は次の通りです。
| ユーザー状態 / 要求 | Email + OTP | 利用者証明用電子証明書 | 署名用電子証明書 |
|---|---|---|---|
メールアドレスあり + low で足りる | ◯ | ◯ | ◯ |
JPKI 連携あり + high で足りる | ☓ | ◯ | ◯ |
JPKI 未連携 + high が必要 | ☓ | ☓ | ◯ |
very_high が必要 | ☓ | ☓ | ◯ |
メール OTP による再認証
メール再認証では、その認可フローを継続中のユーザーのメールアドレス宛に OTP を送信します。
ポイント
- OTP の有効期限は短く、試行回数にも上限があります
- 成功すると現在の
ps_sidセッションが更新され、acr=lowとamr=otpが記録されます - 完了後は認可フローが再開されます
JPKI による再認証
JPKI 再認証は、マイナポータルアプリ連携を使って実行されます。
jpki
- 利用者証明用電子証明書で再認証します
- 既存の JPKI 連携があることが前提です
- 成功すると
acr=highが記録されます
jpki_sign
- 署名用電子証明書で再認証します
- JPKI 未連携でも開始できます
- 成功すると
acr=very_highが記録されます - 別ユーザーのカードが提示された場合は失敗します
再認証フロー
注意点
prompt=loginは必ずしもログアウトを意味しません。既存セッションを維持したまま再認証だけを行います- 再認証が失敗しても、元のログインセッションが直ちに破棄されるわけではありません
- 要求 ACR を満たす手段が存在しない場合は、認可成功には進めません
- 要求 ACR は「最小必要強度」と「UI 上で優先したい強度」を分けて考えてください
prompt=noneと再認証要求の組み合わせではエラー分岐の実装が必要ですmergeなど追加権限要求と再認証要求が同時に起こる場合もあります