#author("2021-09-09T05:40:20+09:00","","")
[[FrontPage]]

&size(24){APIユーザートークン認証ガイド(暫定ドキュメント)};


- (※var)の項目は、設定による可変~

#contents

* ユーザートークン認証 [#c34fba60]

IMD食品栄養データAPIの使用に際し、アクセス元IPアドレスによる認証を使用できない場合、アクセストークンによる認証を実装する必要がある。(スマホアプリ等から直接APIにアクセスを行う場合等)~
API使用者は適切に、ユーザーアカウントを管理し、アプリ等使用者にトークンを配布し、またAPIサーバーからのトークン問合せに応答する必要がある。

 図(暫定)
 
 +-------------+                          +-------------+ 
 |トークン管理 |<---- トークン問合せ ---- | APIサーバー |
 |    サーバー |----- トークン応答   ---> |             |
 +-------------+                          +-------------+
  |                                                A |
  |                                                | |
  |                  +------------+                | |
  +---- トークン --> |クライアント| ---- トークン -+ |
                     |            | <--- 食品データ -+
                     +------------+


** API使用者によるトークンの管理 [#p25a5922]

API使用者は、ユーザー毎に、APIにアクセスするために必要なトークンを振り出し、管理しなければならない。~

*** クライアントへのトークン配布 [#x80b0f25]

トークンは、外部に漏洩しない適切な方法で、トークンをクライアントに配布しなければならない。~

*** トークン問合せサーバーの実装 [#k777d465]

API使用者は、APIサーバーからトークンの使用可否についての問合せを受け付け、適切に応答しなければならない。~

** クライアントのトークン送出 [#bbb25254]

スマホアプリ等、APIにアクセスを行うクライアントは、APIへりアクセス時に Authorization ヘッダーを用いてトークンを送出しなければならない。~




* 仕様 [#q6b810a4]

** トークンの仕様 [#z26c0771]

トークンは以下の仕様を遵守すること。

- 半角英数及び記号-(マイナス)_(アンダースコア).(ピリオド)で構成される文字列であること
- 文字列の長さは、64文字以上4096文字以下であること
- 文字種が6以上であること

** トークンの送出 [#q9e726e8]

クライアントは全てのアクセスに際して、HTTPリクエストヘッダーに以下の通りアクセストークンを送出する。

 Authorization: Bearer (アクセストークン)

Authorizationヘッダーは、typeをBearerとし、credentialsにアクセストークン文字列を指定する。
アクセストークンによる認証が成功した場合、APIサーバーはHTTPレスポンスコード200を返却する。レスポンスヘッダーに X-MobadaiApi-Authenticated が含まれ、値は true となる。&br;
アクセストークンによる認証に失敗した場合、APIサーバーはHTTPレスポンスコード401を返却する。レスポンスヘッダーに X-MobadaiApi-Authenticated は含まれない。


** トークン問合せサーバーの仕様 [#ie868129]

APIサーバーへのアクセスにおいて送出されたトークンが新規トークンであった場合、API使用者の用意するトークン問合せサーバーに対してトークンの使用可否を問い合わせる。~
トークン問合せサーバーは、HTTPを用いる。サーバーはTLS1.2以上を採用したhttpsでなければならない。~
トークン問合せはGETメソッドを使用する。問合せ先のURLは、API使用者により任意に設定される(※各提供先向けのページ https://nmmq.mobidy.jp/utils/economyapi/ でAPI使用者が任意に設定)。~

*** トークン問合せクエリー [#ie868129]

問い合わせ先URLに対して以下のクエリーを付加してアクセスを実行する。
認証ハッシュは、連携設定で「トークン検証時認証ハッシュ送出」がオンの時、sha1( アクセストークン+認証キー ) の値をセットする。

|変数名|内容|必須|h
|access_token|アクセストークン|必ず付加|
|authid|提供先ID|設定により|
|authkey|認証ハッシュ|設定により|

 クエリ例
 https://auth.yourdomain.jp/verify?access_token=dwsQJUuB86uxgTeacx5DsL8VZkQbHuCuhuoUhPbMLHZMJtK9Ey95fp55YTFWWP
 uacn8DBme2s3blpF1X8GN6P6gi0xZlqaUVHxPGJhZUqLUknUQUJawzwzAn&authid=yourid&authkey=8a0e890c4d45a0d91da72c3b0e8e0189adc9e081

*** トークン有効時のレスポンス [#xe9baad2]

- レスポンスコード
レスポンスコード200を返す。

- レスポンスボディ
トークンの残り有効期間(秒)を表す expires_in を含むJSONを返す。~
例:
 { "expires_in":86400 }

トークンが有効である場合、有効期間は最大24時間(※var)とし、これ以上の値が設定された場合は、24時間に設定される。~
トークンが有効期間を過ぎた場合、APIサーバーに於いて使用を拒否され、また当該トークンは以後24時間(※var)再使用が拒否される。~

*** トークン無効時のレスポンス [#i2725944]

- レスポンスコード
レスポンスコード400を返す。

- レスポンスボディ
規定なし

トークンが無効である場合、レスポンスが行われた後24時間(※var)、当該のトークンはAPIサーバーに於いて使用を拒否される。~


** トークン問合せのレート制限 [#ece0f790]

トークン問合せは、1時間あたり10000回(※var)までに制限される。制限を超えた場合、トークン問合せは行われず使用は拒否される。

** APIアクセスのレート制限 [#ef875cd8]

トークンを使用したAPIへのアクセスは、1時間あたり500回(※var)までに制限され、かつ、短時間に多数のクエリーを受け付けないように抑制される。レート制限が発動した時は、当該のトークンはAPIサーバーに於いて使用を拒否される。~

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS