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

マイナンバーカード認証を要求しながらログイン連携する

ログイン時点で JPKI 相当の強い本人確認を要求したい場合のフローです。 本人確認レベルを引き上げたいときは、acr_values で要求するのが基本です。

このフローで実現すること

  • ログイン成功時の id_token.acrurn:klon:acr:high 以上にする
  • amr から JPKI ベースで認証されたことを確認する
  • 既存セッションが弱い場合でも、必要に応じてマイナンバーカード認証に進ませる

フロー図

認可エンドポイントで送るパラメータ

パラメータ役割
client_id7f3b41e2-a81c-4e35-b08d-2c7e60a4d073OIDC クライアント ID
redirect_urihttps://rp.example.com/callbackコールバック先
response_typecodeAuthorization Code Flow
scopeopenidID トークン発行を要求
state3b8a...サービス側の対応付け
noncef4de...ID トークン検証用
code_challengexxxxxxxPKCE
code_challenge_methodS256PKCE の方式
acr_valuesurn:klon:acr:highJPKI 利用者証明相当を要求
GET /api/oidc/v1/authorize
?client_id=7f3b41e2-a81c-4e35-b08d-2c7e60a4d073
&redirect_uri=https%3A%2F%2Frp.example.com%2Fcallback
&response_type=code
&scope=openid
&state=3b8a...
&nonce=f4de...
&code_challenge=xxxxxxx
&code_challenge_method=S256
&acr_values=urn%3Aklon%3Aacr%3Ahigh

トークンエンドポイントで送るパラメータ

通常のログインと同じく、authorization_code グラントで交換します。

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/callback" \
-d "code_verifier=random-verifier"

サービス側で確認するポイント

  • id_token.acr が少なくとも urn:klon:acr:high であることを確認する
  • id_token.amrjpkijpki_card_user_authn が含まれることを確認する
  • さらに強い認証が必要なら acr_values=urn:klon:acr:very_high を使う

使い分け