プレビュー版
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_type | Bearer |
access_token | JWT 形式のアクセストークン |
expires_in | アクセストークンの有効期限(秒) |
refresh_token | offline_access を要求した場合に返ります |
id_token | openid を要求した場合に返ります |
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 レスポンスでは、現在の実装では scope と authorization_details は返しません。
リフレッシュトークン
通常のブラウザ向けフローでは、リフレッシュトークンは使用時にローテーションされ、新しいリフレッシュトークンが返却されるとともに、古いトークンは無効化されます。
ID トークン
ID トークンは openid スコープを要求した場合のみ発行されます。
署名検証に必要な公開鍵は jwks_uri から取得してください。
主なクレーム
| クレーム | 説明 |
|---|---|
iss | Issuer |
sub | サブスクリプション ID |
aud | クライアント ID |
iat | 発行時刻 |
exp | 有効期限 |
auth_time | 最終認証時刻 |
acr | 認証強度 |
amr | 認証方法 |
sid | RP ごとのクライアントセッション ID |
jpki_verified | アカウントに JPKI 連携があるかどうか |
nonce | 認可リクエストで指定した場合のみ返ります |
スコープに応じて追加されるクレーム
| スコープ | 追加される主なクレーム |
|---|---|
profile | name, gender, birthdate |
email | email, email_verified |
address | address |
phone | phone_number, phone_number_verified |
personal_info | name, gender, birthdate, address |
トークン取得の流れ
主なエラー
| エラー | 主な意味 |
|---|---|
invalid_client | クライアント認証失敗 |
invalid_request | 必須パラメータ不足や形式不正 |
invalid_grant | 認可コード不正、期限切れ、redirect_uri 不一致、refresh token 不正など |
unsupported_grant_type | 未サポートの grant_type |
invalid_dpop_proof | DPoP proof 不正、または不足 |
invalid_client でまず疑うこと
- クライアント認証方式が登録内容と一致しているか
client_secretが再発行されていないかprivate_key_jwtのaudや署名鍵が正しいか
invalid_grant でまず疑うこと
- 認可コードが既に使われていないか
- 認可コードが期限切れでないか
redirect_uriが認可時と完全一致しているか- refresh token が既にローテーション済みでないか