Binding

Concrete Specification

Prerequisites(前提条件)

  • 本プロトコルは HTTPS(TLS 1.2以上) を使用し、 REST形式のHTTPリクエスト/レスポンス により通信を行う。

  • エンドポイント:指定されたURIに対してHTTPメソッド(GET, POST, PUT, DELETE)を使用

  • データ形式:リクエストおよびレスポンスの本文はJSON形式

  • 認証・認可:認証・認可方式には OAuth 2.0 および OpenID Connect を使用する。

    自然人主体の認証には OpenID Connect(Authorization Code Flow)を、 システム主体のアクセス制御には OAuth 2.0(Client Credentials Flow)を用いる。

    また、ポリシーベースでの認可制御を提供する。

  • セキュリティ要件:TLS 1.2以上必須、暗号化通信を保証

Field Definitions(フィールド定義)

本プロトコルで使用される各フィールドの定義を記す。 なお、各APIの詳細な項目定義は別途公開している「API仕様書arrow-up-right」を参照すること。

各フィールドについて、以下の情報を記す。

  • フィールド名:プロトコル内で使用される名称

  • :データ型(例:整数、文字列)

  • 必須性:フィールドの利用条件

    • R = Required(必須)

    • C = Conditional(条件付き必須)

    • O = Optional(任意)

  • Request:リクエストにおいて使用される

  • Response:レスポンスにおいて使用される

  • 説明:フィールドの意味や利用方法

Headerフィールド定義

フィールド名
必須
Request
Response
説明

API-Key

String

R

クライアントアプリごとに払い出されたAPIKeyを指定する。ODS独自項目

Authorization

String

C

アクセストークンを指定する。例:Bearer < token > 認証フロー関連のAPI(パスワード変更を除く)では不要。

Content-Type

String

R

リクエスト形式を指定する。

User-Agent

String

O

クライアントのユーザーエージェントを指定する。

Accept-Language

String

O

クライアントの受け入れる希望言語を指定する。

X-TrackingID

String

O

リクエストのトレーシングを行う一意なIDを指定する。ODS独自項目

Content-Security-Policy

String

O

コンテンツの読み込み・実行ポリシーを指定し、スクリプトやリソースの許可元を制御する。

X-Content-Type-Options

String

O

ブラウザのMIMEタイプ推測を禁止し、指定されたContent-Typeを強制する。

Strict-Transport-Security

String

O

指定期間、HTTPS接続を強制し、HTTPへのダウングレードを防止する。

Access-Control-Allow-Origin

String

O

CORSに関する項目。 レスポンスを許可するオリジンを指定し、クロスオリジンアクセスを制御する。

Access-Control-Allow-Methods

String

O

CORSに関する項目。 クロスオリジンリクエストで許可するHTTPメソッドを指定する。

Access-Control-Allow-Headers

String

O

CORSに関する項目。 クロスオリジンリクエストで許可するリクエストヘッダーを指定する。

Access-Control-Allow-Credentials

String

O

CORSに関する項目。 クロスオリジンリクエストで認証情報の送信を許可するかを指定する。

Payloadフィールド定義

フィールド名
必須
Request
Response
説明

type

String

R

実行結果の種類を識別するURIを設定する。

title

String

R

実行結果を説明する内容を設定する。

status

Integer

R

HTTPステータスコードを設定する。

detail

String

R

ODS運営事業者が調査を行うのにあたり必要な情報(例:エラー発生時の発生日時)を設定する。

data

String

C

正常時の実行結果に対する業務データオブジェクト。 異常時では不要。

Functional Description(機能詳細)

Request・Response・Example・Error一覧・API固有のフィールド定義などの具体実装はAPI仕様書arrow-up-rightの記載を参照すること。

機能分類
機能詳細
説明

認証

ユーザ当人認証

OIDCの認可フローに基づきユーザの認証を行う。

認証

クライアントシステム認証

クライアントIDとクライアントシークレットを使用して、クライアントクレデンシャルフローにてクライアントの認証を行う。

トークン検証・更新

トークンイントロスペクション

アクセストークンを検証し、トークンの有効性や関連情報を取得する。

トークン検証・更新

アクセストークン更新

リフレッシュトークンを使用してアクセストークンを再取得する。

パスワード変更

パスワード変更

リクエストに含まれるIDに対応するユーザのパスワードを変更する。

APIKey検証

APIKey検証

リクエストボディに含めたAPIKeyの有効性を検証する。

認可

認可モデル登録・取得

認可に利用するモデルの登録・取得を行う。登録についてはアクセス制限を設け、許可したユーザのみ登録可能となるようにする。

認可

認可タプル登録・取得

認可に利用するタプルの登録・取得を行う。登録についてはアクセス制限を設け、許可したユーザのみ登録可能となるようにする。

認可

認可判定

認可の判定を行う。API定義についてはAuthZENのevaluationエンドポイントの仕様に準拠する。

ユーザ・クライアント登録

ユーザ登録

ユーザの新規作成を行う。

ユーザ・クライアント登録

クライアント登録

クライアントの登録およびクライアントシークレットの発行を行う。

事業者情報管理

事業者情報登録・取得・更新

事業者情報に関する操作を行う。

事業所情報管理

事業所情報登録・取得・更新

事業者に紐づく付帯情報である事業所情報に関する操作を行う。

認証

本プロトコルの認証機能では以下の 2 種類の認証フローを提供する。

認証フロー
説明

Authorization Code Flow(認可コードフロー)

ユーザを伴う認証シナリオで使用する。クライアントはユーザを介してIdentity & Trust(L3)の認証画面へリダイレクトし、認証後に発行される認可コードを用いてアクセストークンを取得する。

Client Credentials Flow(クライアントクレデンシャルフロー)

ユーザを伴わない非対話認証シナリオに使用する。クライアントはclient_idおよびclient_secretを用いてIdentity & Trust(L3)のクライアントシステム認証エンドポイントへアクセスし、アクセストークンを取得する。

認証情報・識別子

認証情報

本機能で用いる主な認証情報を以下に示す。

認証情報
利用フロー
説明

login_user_id

認可コードフロー

ユーザ認証を伴う認可コードフローにおいて、ユーザがログイン画面で入力する識別子。

password

認可コードフロー

ログインユーザ ID に対応する秘密情報。

client_id

認可コードフロー/クライアントクレデンシャルフロー

本プロトコル上のクライアント(アプリケーション)を識別する ID。

client_secret

認可コードフロー/クライアントクレデンシャルフロー

クライアントが Identity & Trust(L3)に対し自身を認証するために使用する秘密情報。

識別子

本プロトコルでは発行するアクセストークンに対し、業務上の識別に必要な以下2種類のカスタムクレームを付与する。

  1. operator_id(事業者識別子)

ユーザまたはクライアントが所属する 事業者(operator) を識別するための情報である。 本クレームは以下のフローにおいてアクセストークンへ付与される。

 - Authorization Code Flow(認可コードフロー) → ユーザ払い出し時に指定された事業者を付与。

 - Client Credentials Flow(クライアントクレデンシャルフロー) → クライアント(client_id)払い出し時に指定された事業者を付与。

  1. open_system_id(システム識別子)  

クライアントが属するシステムを識別するための情報である。 本クレームは以下のフローにおいてのみアクセストークンへ付与される。

 - Client Credentials Flow(クライアントクレデンシャルフロー)

Authorization Code Flow(ユーザを伴うフロー)では付与されない。

Sequence Diagram(シーケンス図)

認可コードフロー

プロトコルフローを参照すること

クライアントクレデンシャルフロー

トークン検証

トークン更新

パスワード変更

APIKey検証

モデル登録

タプル登録

認可判断

ユーザ・クライアント登録

事業者情報管理

事業所情報管理

最終更新