プレビュー版
PocketSign Link v2 は現在プレビュー版です。正式提供までに仕様が変更される可能性があります。
重要な操作の前に PocketSign Link v2 での再認証を要求する
すでにサービスにログイン済みのユーザーに対して、送金、連携解除、重要情報の変更などの直前で再認証を求めるフローです。 この用途では、通常のログイン導線とは別に、もう一度認可リクエストを実行します。
このフローで実現すること
- 重要操作の直前にユーザーの再確認を行う
auth_timeを更新した新しい ID トークンを受け取るacr_valuesを組み合わせることで、より強い再認証も要求可能
フロー図
認可エンドポイントで送るパラメータ
| パラメータ | 例 | 役割 |
|---|---|---|
client_id | 7f3b41e2-a81c-4e35-b08d-2c7e60a4d073 | OIDC クライアント ID |
redirect_uri | https://rp.example.com/reauth/callback | 再認証用コールバック |
response_type | code | Authorization Code Flow |
scope | openid | ID トークン再発行を受ける |
state | 9af1... | サービス側の再認証要求と結び付ける |
nonce | 2d43... | ID トークン検証用 |
code_challenge | xxxxxxx | PKCE |
code_challenge_method | S256 | PKCE の方式 |
prompt | login | 明示的に再認証を要求 |
max_age | 0 | 常に新しい認証イベントを要求したい場合に併用 |
acr_values | urn:klon:acr:high | 高強度再認証も必要な場合だけ指定 |
GET /api/oidc/v1/authorize
?client_id=7f3b41e2-a81c-4e35-b08d-2c7e60a4d073
&redirect_uri=https%3A%2F%2Frp.example.com%2Freauth%2Fcallback
&response_type=code
&scope=openid
&state=9af1...
&nonce=2d43...
&code_challenge=xxxxxxx
&code_challenge_method=S256
&prompt=login
&max_age=0
:::info acr_values とフローの関係
acr_values を指定すると、v2 は指定された認証強度(ACR)を満たす方法でユーザーを再認証させます。
指定しない場合は prompt=login のみで再認証が要求されますが、acr_values=urn:klon:acr:high を追加するとマイナンバーカード認証など高強度の手段が求められます。
再認証後に サービスは id_token の acr クレームを確認することで、要求した強度が実際に満たされたかを検証できます(フロー図のステップ 11 を参照)。
:::
トークンエンドポイントで送るパラメータ
curl -X POST "https://id.mock.klon.you/api/oidc/v1/token" \
-u "7f3b41e2-a81c-4e35-b08d-2c7e60a4d073:client-secret" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=SplxlOBeZQQYbYS6WxSbIA" \
-d "redirect_uri=https://rp.example.com/reauth/callback" \
-d "code_verifier=random-verifier"
サービス側で確認するポイント
id_token.auth_timeが直近であることを確認する- 操作に応じて
acrとamrも確認する - このフローは「サービスのログアウト」ではなく「追加の認証確認」として扱う
典型パターン
- とにかく再入力させたい:
prompt=login - 一定時間以内の認証で足りる:
max_age=3600 - 高強度再認証も必要:
prompt=loginとacr_values=urn:klon:acr:high