共通機能標準仕様書 別紙9-3 OAuth2.0アクセストークン無効化API仕様書【第1.3版】
原本: デジタル庁「地方公共団体情報システム共通機能標準仕様書」の別紙 2026年9月30日公開分(ZIP、掲載ページ)の「別紙9-3_OAuth2.0アクセストークン無効化API仕様書【第1.3版】.xlsx」。シートごとに見出しを立て、見出し行で始まる表は表に、それ以外の行は段落にした(値はセルの文字列のまま、結合セルの 2 つ目以降は空欄。表の外の行で文字が複数あるものはセルの値を空白でつないだ)。見出しが 2 段の表は列見出しを「 / 」でつないだ。シートに描かれた図形・画像(シーケンス図等)は載せていない。
表紙
地方公共団体情報システム
共通機能標準仕様書
OAuth2.0アクセストークン無効化API仕様
第1.3版
令和8年9月
OAuth2.0アクセストークン無効化API仕様
API仕様書 仕様名
OAuth2.0アクセストークン無効化API仕様
概要
本資料はOAuth2.0アクセストークンの無効化を実施するためのAPI仕様について記述したものである。
「地方公共団体情報システムデータ要件・連携要件標準仕様書」の「文字要件」で定めた標準仕様に従う必要がある。
本APIでサポートするHTTPメソッドはPOSTとする。
提供可能なAPIコールについて
提供するAPIコールは、以下の通りである。
| No. | APIコール名 | 操作種類 | 概要 |
|---|---|---|---|
| 1 | oauth/v1/revoke | revoke | OAuth2.0アクセストークンの無効化を実施する。 |
APIコールにおける補足事項
■通信プロトコル
本APIを利用する際の通信プロトコルは、HTTP1.1以上を採用する。
■要求元認証
本APIの要求元認証は、認証方式:client_secret_jwtで行う。
APIシーケンス(OAuth2.0)
API仕様書 仕様名
OAuth2.0アクセストークン無効化API仕様
シーケンス図
凡例 APIのレスポンス、リクエストデータに関する説明
リクエスト_API仕様
API仕様書 仕様名
OAuth2.0アクセストークン無効化API仕様
使用方法
本APIを使用してOAuth2.0アクセストークンの無効化を要求する。
正常に処理が完了した場合は、アクセストークンの無効化が実施される。正常に処理されなかった場合は、失敗した理由がエラーメッセージとして返却される。
Content-typeにapplication/x-www-form-urlencodedを指定してデータを送信する形式でリクエストし、JSON形式で返却される。
HTTPメソッド:POST
リクエストヘッダー:Content-Type: application/x-www-form-urlencoded
留意事項
本APIが正常に終了またはアクセストークンが既に無効の場合は、HTTPステータスコード200とJSON形式のレスポンスオブジェクトが返却される。(レスポンス_API仕様を参照)
送信したパラメータのチェックにてエラーとなった場合は、HTTPステータスコード400とJSON形式のレスポンスオブジェクトが返却される。(レスポンス_API仕様を参照)
未登録のクライアントの場合は、HTTPステータスコード401とJSON形式のレスポンスオブジェクトが返却される。(レスポンス_API仕様を参照)
処理が30秒以上経過した場合は、タイムアウトとなる。タイムアウトが発生した場合、原則HTTPステータスコード500番台のエラーが返却される。(JSON形式では返却されない)※目安として30秒と記載しているが、性能テストを踏まえ、適切なタイムアウト時間を設定されたい
サービスメンテナンス時も同様に原則HTTPステータスコード500番台のエラーが返却される。(JSON形式では返却されない)
上記以外の想定外エラーが発生した場合は、HTTPステータスコード503とJSON形式のレスポンスオブジェクトが返却される。(レスポンス_API仕様を参照)
※1 【必須】 :「◎」・・・ パラメータまたはオブジェクトが必ず出現する。 「」(空白)・・・パラメータまたはオブジェクトが出現しない場合がある。
※2 【null設定有無】 :「〇」・・・ 値にnullが設定される場合がある。 API記述例:"nominal_segregation_address_num": null
リクエストID oauth/v1/revoke_R01
パラメータ
| 項番 | パラメータ名 | 項目名 | 項目説明 | 記述例 | 必須※1 | データ型 | 文字種 | データ長 / 桁数 | 検索方法 | 備考 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | token | トークン | 無効化をするトークン文字列 | token=Kz | ◎ | 文字列 | 半角 英字 記号 | - | アクセストークンの文字列を指定 | |
| 2 | token_type_hint | トークンの種類 | 無効化をするトークンの種類 | token_type_hint=access_token | ◎ | 文字列 | 半角 英字 記号 | 12 | "access_token"で固定 | |
| 3 | client_assertion_type | クライアントアサーションタイプ | 利用するOAuth2.0のクライアントアサーションタイプ | client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer | ◎ | 文字列 | 半角 英数字 記号 | 54 | "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"で固定 | |
| 4 | client_assertion | クライアントアサーション | クライアントIDとクライアントシークレットから作成したクライアントアサーションJWT | client_assertion= eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2Nzg3NzcxNDEsImV4cCI6MTY3ODc3NzIwMSwianRpIjoiVm5aMGloa1… | ◎ | 文字列 | 半角 英数字 記号 | - | 生成方法は「クライアントアサーションJWT生成方法」参照 |
クライアントアサーションJWT生成方法
API仕様書 仕様名
OAuth2.0アクセストークン無効化API仕様
クライアントアサーションJWT生成方法
本APIのリクエストに必要なクライアントアサーションJWTの生成方法を記載する。
生成方法
1) ヘッダ部分のJSON文字列をbase64urlエンコードする
【例】 エンコード前のJSON : {"alg": "HS256"}
エンコード後の文字列 : eyJhbGciOiJIUzI1NiJ9
2) ペイロード部分のJSON文字列をbase64urlエンコードする
【例】 エンコード前のJSON : {"iss": "JTAxK5JPI4kmD63U4wautrSvaHj3WbBQ","sub": "JTAxK5JPI4kmD63U4wautrSvaHj3WbBQ","aud":
"https://server.example.com/oauth/v1/revoke","jti": "K46dO5OxbgDf8EcL2u3qygNkR0rI6er4uSrdam5rrpmaCqtfihY0EGoPWEPWCTyqEbARyOG5rsAYhLYY3I36gb8EjKBJQjMX4FBnddG1DLw0O4kFDS82EvO60XQJHeXL","exp": 1659281200,"iat": 1659280600}
エンコード後の文字列 : eyJpc3MiOiAiSlRBeEs1SlBJNGttRDYzVTR3YXV0clN2YUhqM1diQlEiLCJzdWIiOiAiSlRBeEs1SlBJNGttRDYzVTR3YXV0clN2YUhqM1diQlEiLCJhdWQiOiAiaHR0cHM6Ly9zZXJ2ZXIuZXhhbXBsZS5jb20vb2F1dGgvdjEvcmV2b2tlIiwianRpIjogIks0NmRPNU94YmdEZjhFY0wydTNxeWdOa1Iwckk2ZXI0dVNyZGFtNXJycG1hQ3F0ZmloWTBFR29QV0VQV0NUeXFFYkFSeU9HNXJzQVloTFlZM0kzNmdiOEVqS0JKUWpNWDRGQm5kZEcxREx3ME80a0ZEUzgyRXZPNjBYUUpIZVhMIiwiZXhwIjogMTY1OTI4MTIwMCwiaWF0IjogMTY1OTI4MDYwMH0
3) 1)で作成したbase64urlエンコード後の文字列と2)で作成したbase64urlエンコード後の文字列を"."で接続した文字列を、クライアントシークレットをキーに利用して、HMAC SHA-256アルゴリズムで計算した値をbase64urlエンコードする
【例】 署名対象の文字列 : eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiAiSlRBeEs1SlBJNGttRDYzVTR3YXV0clN2YUhqM1diQlEiLCJzdWIiOiAiSlRBeEs1SlBJNGttRDYzVTR3YXV0clN2YUhqM1diQlEiLCJhdWQiOiAiaHR0cHM6Ly9zZXJ2ZXIuZXhhbXBsZS5jb20vb2F1dGgvdjEvcmV2b2tlIiwianRpIjogIks0NmRPNU94YmdEZjhFY0wydTNxeWdOa1Iwckk2ZXI0dVNyZGFtNXJycG1hQ3F0ZmloWTBFR29QV0VQV0NUeXFFYkFSeU9HNXJzQVloTFlZM0kzNmdiOEVqS0JKUWpNWDRGQm5kZEcxREx3ME80a0ZEUzgyRXZPNjBYUUpIZVhMIiwiZXhwIjogMTY1OTI4MTIwMCwiaWF0IjogMTY1OTI4MDYwMH0
エンコード後の署名値 : dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
4) 1)で作成したbase64urlエンコード後の文字列、2)で作成したbase64urlエンコード後の文字列、3)で作成したbase64urlエンコード後の文字列を"."で接続した値が、クライアントアサーションJWT
【例】 生成したクライアントアサーションJWT : eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiAiSlRBeEs1SlBJNGttRDYzVTR3YXV0clN2YUhqM1diQlEiLCJzdWIiOiAiSlRBeEs1SlBJNGttRDYzVTR3YXV0clN2YUhqM1diQlEiLCJhdWQiOiAiaHR0cHM6Ly9zZXJ2ZXIuZXhhbXBsZS5jb20vb2F1dGgvdjEvcmV2b2tlIiwianRpIjogIks0NmRPNU94YmdEZjhFY0wydTNxeWdOa1Iwckk2ZXI0dVNyZGFtNXJycG1hQ3F0ZmloWTBFR29QV0VQV0NUeXFFYkFSeU9HNXJzQVloTFlZM0kzNmdiOEVqS0JKUWpNWDRGQm5kZEcxREx3ME80a0ZEUzgyRXZPNjBYUUpIZVhMIiwiZXhwIjogMTY1OTI4MTIwMCwiaWF0IjogMTY1OTI4MDYwMH0.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
※1 【必須】 :「◎」・・・ パラメータまたはオブジェクトが必ず出現する。 「」(空白)・・・パラメータまたはオブジェクトが出現しない場合がある。
ヘッダ (JSON)
| 項番 | パラメータ名 | 項目名 | 項目説明 | 記述例 | 必須※1 | データ型 | 文字種 | データ長 / 桁数 | 検索方法 | 備考 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | alg | アルゴリズム | 署名のアルゴリズム | "alg": "HS256" | ◎ | 文字列 | 半角 英字 記号 | 5 | "HS256"固定 |
ペイロード (JSON)
| 項番 | パラメータ名 | 項目名 | 項目説明 | 記述例 | 必須※1 | データ型 | 文字種 | データ長 / 桁数 | 検索方法 | 備考 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | iss | 発行者 | クライアントアサーションJWTの発行者 | "iss": "JTAxK5JPI4kmD63U4wautrSvaHj3WbBQ" | ◎ | 文字列 | 半角 英数字 記号 | 32 | 要求元システムのクライアントIDを指定(32文字) | |
| 2 | sub | 主体 | クライアントアサーションJWTの主体 | "sub": "JTAxK5JPI4kmD63U4wautrSvaHj3WbBQ" | ◎ | 文字列 | 半角 英数字 記号 | 32 | 要求元システムのクライアントIDを指定(32文字) | |
| 3 | aud | 対象者 | クライアントアサーションJWTの発行対象者 | "aud": "https://server.example.com/oauth/v1/revoke" | ◎ | 文字列 | 半角 英数字 記号 | - | 基本的には、認証認可サーバのURL(認証認可サーバのissuerの値)を含むものとする ただし、認証認可サーバを示す識別子の範疇を超えない限り(トークンエンドポイント等)、認証認可サーバ側の判断による変更も可能とする。変更する場合は、RP側に必ずその旨を伝えること。 | |
| 4 | jti | JWT ID | JWTのID | "jti": "K46dO5OxbgDf8EcL2u3qygNkR0rI6er4uSrdam5rrpmaCqtfihY0EGoPWEPWCTyqEbARyOG5rsAYhLYY3I36gb8EjKBJQjMX4FBnddG1DLw0O4kFDS82EvO60XQJHeXL" | ◎ | 文字列 | 半角 英数字 記号 | - | 発行者が発行したJWTを一意に識別するためのID データの桁数は、一意に識別するために十分なエントロピーが確保可能な桁数を指定 | |
| 5 | exp | 有効期限 | クライアントアサーションJWTの有効期限 | "exp": 1659281200 | ◎ | 数値 | 半角 数字 | 10 | 発行されたクライアントアサーションJWTの有効期限のUNIX時間 | |
| 6 | iat | 発行時刻 | クライアントアサーションJWTの発行時刻 | "iat": 1659280600 | ◎ | 数値 | 半角 数字 | 10 | 発行されたクライアントアサーションJWTの発行時刻のUNIX時間 |
レスポンス_API仕様
API仕様書 仕様名 "
OAuth2.0アクセストークン無効化API仕様
レスポンスID oauth/v1/revoke_S01
| 項番 | レベル | レスポンスオブジェクト名 / 階層 | レスポンスオブジェクト名 / 階層 | 項目名 | 項目説明 | 記述例 | 必須※1 | null設定有無※2 | データ型 | 文字種 | データ長 / 桁数 | 備考 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ■正常系(HTTPステータスコード:200、JSON形式でのレスポンス) | ||||||||||||
| ー | ー | ボディなし | - | - | - | - | - | |||||
| ■正常系エラー(HTTPステータスコード:400, 401, 403, or 200、JSON形式でのレスポンス) | ||||||||||||
| 1 | 1 | レスポンスオブジェクト | { | ◎ | - | 構造化 | - | - | ||||
| 2 | 2 | error | エラーコード | エラーコード | "error": "invalid_token", | ◎ | - | 文字列 | 半角 英数字記号 | - | ||
| 3 | 2 | error_description | エラーメッセージ | エラーの内容 | "error_description": "トークンが無効です。" | ◎ | - | 文字列 | 全角 半角 英字 | - | ||
| 4 | } | ◎ | - | 構造化 | - | - | ||||||
| ■異常系(HTTPステータスコード:503、JSON形式でのレスポンス(ただし、30秒以上タイムアウトエラー、サービスメンテナンス中は、原則HTTPステータスコード500番台のエラーが返却され、JSON形式では返却されない)) | ||||||||||||
| ー | ー | ボディなし | - | - | - | - | - |
エラーコード一覧
| 項番 | エラーコード | エラーの内容 | HTTPステータスコード | 備考 |
|---|---|---|---|---|
| 1 | invalid_request | 必須のパラメータが設定されていない、パラメータのフォーマットが異なる、などのパラメータエラー。 | 400 | |
| 2 | invalid_client | 未登録のクライアントからのリクエストの場合。 | 401 | |
| 3 | invalid_token | アクセストークンが期限切れ、失効、または指定されたアクセストークンが存在しない場合。 | 200 |