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

トークン

POST /api/oidc/v1/token は、認可コードまたはリフレッシュトークンを使ってトークンを取得するエンドポイントです。

アクセストークン、リフレッシュトークン、ID トークンの仕様や失効、ローテーション、トークンファミリーとの関係は トークンの仕様とライフサイクル を参照してください。

クライアント認証

トークンエンドポイントは機密クライアントのクライアント認証が必須です。認可コード交換時だけでなく、リフレッシュトークン交換時も、認証する必要があります。

認証方式の詳細、各エンドポイントでの要否、private_key_jwt の JWT 構成、よくある実装ミスについては クライアント認証 を参照してください。

認可コードを用いて取得する場合

リクエスト

パラメータ必須説明
grant_typeはいauthorization_code
codeはい認可エンドポイントで発行された認可コード
redirect_uriはい認可リクエスト時に指定した redirect_uri
code_verifier条件付きPKCE を使った場合に必要

機密クライアントでは、これに加えて登録済みのクライアント認証も必要です。

レスポンス

フィールド説明
token_typeBearer
access_tokenJWT 形式のアクセストークン
expires_inアクセストークンの有効期限(秒)
refresh_tokenoffline_access を要求した場合に返ります
id_tokenopenid を要求した場合に返ります
scope実際に付与されたスコープ
authorization_details実際に付与された権限
grant_id紐づくグラント ID

リフレッシュトークンを用いて取得する場合

リクエスト

パラメータ必須説明
grant_typeはいrefresh_token
refresh_tokenはいリフレッシュトークン

機密クライアントでは、リフレッシュ時もクライアント認証が必要です。

レスポンス

フィールド説明
token_type通常は Bearer。DPoP バインド時は DPoP
access_token新しいアクセストークン
expires_inアクセストークンの有効期限を表す値
refresh_tokenローテーション時に新しく返るリフレッシュトークン
id_token元のトークンファミリーが openid を持つ場合に返ります
grant_id紐づくグラント ID

refresh_token レスポンスでは、現在の実装では scopeauthorization_details は返しません。

リフレッシュトークン

通常のブラウザ向けフローでは、リフレッシュトークンは使用時にローテーションされ、新しいリフレッシュトークンが返却されるとともに、古いトークンは無効化されます。

ID トークン

ID トークンは openid スコープを要求した場合のみ発行されます。 署名検証に必要な公開鍵は jwks_uri から取得してください。

主なクレーム

クレーム説明
issIssuer
subサブスクリプション ID
audクライアント ID
iat発行時刻
exp有効期限
auth_time最終認証時刻
acr認証強度
amr認証方法
sidRP ごとのクライアントセッション ID
jpki_verifiedアカウントに JPKI 連携があるかどうか
nonce認可リクエストで指定した場合のみ返ります

スコープに応じて追加されるクレーム

スコープ追加される主なクレーム
profilename, gender, birthdate
emailemail, email_verified
addressaddress
phonephone_number, phone_number_verified
personal_infoname, gender, birthdate, address

トークン取得の流れ

主なエラー

エラー主な意味
invalid_clientクライアント認証失敗
invalid_request必須パラメータ不足や形式不正
invalid_grant認可コード不正、期限切れ、redirect_uri 不一致、refresh token 不正など
unsupported_grant_type未サポートの grant_type
invalid_dpop_proofDPoP proof 不正、または不足

invalid_client でまず疑うこと

  • クライアント認証方式が登録内容と一致しているか
  • client_secret が再発行されていないか
  • private_key_jwtaud や署名鍵が正しいか

invalid_grant でまず疑うこと

  • 認可コードが既に使われていないか
  • 認可コードが期限切れでないか
  • redirect_uri が認可時と完全一致しているか
  • refresh token が既にローテーション済みでないか