ワンタイム APPKEY
APPKEYの安全な取り扱い
APPKEY は、アプリケーションが AmiVoice API を利用する際の「サービス認証キー文字列」であり、漏洩すると悪用される恐れがあります。APPKEY をアプリケーションに埋め込むと、悪意のある第三者によってアプリケーションから APPKEY を取り出される可能性があります。一般に、ご自身が所有している APPKEY をアプリケーションの利用者のマシンには送付しないでください。代わりに流出しても影響範囲を最小限にできるように有効期限付きのワンタイム APPKEY を利用してください。
- ワンタイム APPKEY は、マイページに記載された APPKEY と同様の機能を持つ「サービス認証キー文字列」ですが、「発行日時と有効時間」にもとづいて「有効期限日時」が設定されている点が異なります。 また、接続元のIPアドレスの制限を設けることができます。
- ワンタイム APPKEY に発行数の上限はありません。
- 特に Web アプリケーションの場合、HTML や JavaScript に APPKEY を記述すると、Web サイトの利用者から閲覧が可能ですので避けてください。
- APPKEY をアプリケーションに埋め込むことが避 けられない場合は、APPKEY を難読化、暗号化してください。難読化、暗号化することでアプリケーションから APPKEY を取り出すことが難しくなります。
- 2025/06/30 のマイページリニューアル以前に作成されたアカウントの APPKEY 及び発行されたワンタイム APPKEY は削除出来ません。削除するには退会ののち新たにアカウントを作成する必要があります。
- 2025/06/30 のマイページリニューアル以降にマイページ上で発行された APPKEY は、マイページ上で手動での削除が可能です。ワンタイム APPKEY 発行 API を使用して発行された APPKEY は、削除出来ません。
ワンタイム APPKEY を使う
ワンタイム APPKEY を使う場合、以下のような実装方法が考えられます。
- アプリケーション利用者を何らかの方法で認証する
- 認証に成功した後、サーバ側で有効期限を設定したワンタイム APPKEY を発行してアプリケーションに送信する
- アプリケーションではワンタイム APPKEY を利用して AmiVoice API を利用する
以下に、ワンタイム APPKEY 発行 API の使い方を説明します。
リクエスト
ワンタイム APPKEY 発行 API を利用するためには、サービス ID(リクエストボディに指定し、パラメータ名は sid)とサービスパスワード(同、spw)、もしくは、マイページ上で「APPKEY 発行可能」と設定して発行した APPKEY(Authorization ヘッダーに指定)の設定が必要です。
sidとspwには、マイページの「接続情報」に記載されている[サービス ID]と[サービスパスワード]を設定してください。
サービスパスワードとマイページへのログイン用のパスワードは異なります。
sidとspwはリクエストボディにapplication/x-www-form-urlencoded形式で設定してください。クエリパラメータ(URL の末尾に?を付けて記載する方法)では指定しないでください。
リクエスト時の HTTP メソッドは、POSTです。
有効時間(リクエストパラメータ名は epi)は任意に設定できます。epi に数値で設定する場合はミリ秒単位になります。その他の設定方法はリファレンスを参照してください。epi を省略した場合はデフォルト値として 30000(30 秒)が設定されます。ワンタイム APPKEY を発行してから、実際に AmiVoice API のリクエストを送信するまでの時間を想定して設定してください。ipaにAPPKEYを利用できるIPアドレスを指定することができます。
curl コマンドを使って、ワンタイム APPKEY を発行してみます。
例1
IPアドレス 203.0.113.253 からのアクセスのみに制限し、有効期限を発行から 30 秒後に設定します。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={サービスID} \
-d spw={サービスパスワード} \
-d epi=30000 \
-d ipa=203.0.113.253
sidとspwの代わりに APPKEY を使用する場合は、以下のようになります。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d epi=30000 \
-d ipa=203.0.113.253 \
-H "Authorization: Bearer {APPKEY 発行可能な APPKEY}"
例2
IPアドレスを範囲で指定して許可したい場合、CIDRで指定できます。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={サービスID} \
-d spw={サービスパスワード} \
-d epi=30000 \
-d ipa=203.0.113.0/24
例3
IPアドレスや、その範囲は、,で 区切って複数指定もできます。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={サービスID} \
-d spw={サービスパスワード} \
-d epi=30000 \
-d ipa=203.0.113.0/24,198.51.100.0/24
レスポンス
レスポンスはプレーンテキストで、ワンタイム APPKEY を返します。そのまま、リクエストパラメータのauthorization キーとして設定できます。
エラー時の対処方法
ワンタイム APPKEY による接続認証が失敗するケース
遅延(期限切れ)による認証エラー
authorization キーによる認証要求を受け取るタイミングが、ワンタイム APPKEY に設定された有効期限日時を過ぎている場合、音声認識サービスは以下のようなエラーを返しますので、改めてワンタイム APPKEY を取得してやり直してください。
HTTP インタフェース のエラーレスポンス
{
"code":"-"
"message":"received illegal service authorization"
}
WebSocket インタフェース のエラーレスポンス
s service authorization has expired: 20XX/XX/XX XX:XX:XX.000 +0000 (-21s)