Feature / Integration 14

FW 管理側 公開側

API認証

HMAC署名などで、外部からFBP APIを安全に呼び出せるようにします。

API認証は、外部システムや自社の別アプリからFBP APIを呼び出すときに、呼び出し元、改ざん有無、時刻ずれ、再送リスクを確認するための機能です。Roundtableでは「どのAPIを外部へ開くか」「誰に認証情報を発行するか」「失敗時にどう返すか」を先にそろえると、発注者、実装者、AIに指示する人が同じ前提で連携範囲を決められます。

API認証で署名付きリクエスト、時刻検証、権限、連携ログを確認している業務画面例

この機能でできること

外部からFBP APIへ送られるリクエストにAPIキー、タイムスタンプ、nonce、HMAC署名などを付け、サーバー側で署名検証を行えます。正しい呼び出し元だけを通し、期限切れ、署名不一致、重複nonce、権限外endpointを拒否して、連携先ごとのアクセス範囲と実行結果を記録できます。

外部APIを、公開URLとは別の安全な入口として扱います。 画面ログインに頼らない連携では、署名、時刻、権限、ログを組み合わせて、外部システムからの登録、更新、取得を追跡できる状態にします。

よくある利用場面

外部システムから登録や更新を受ける 基幹システム、予約サービス、会員アプリなどから、顧客、注文、予約、ステータスをAPIで登録・更新します。
連携先ごとに使えるAPIを分ける 取引先、店舗、委託先、社内アプリごとにAPIキーを分け、参照だけ、登録だけ、特定endpointだけなどの範囲を制御します。
失敗理由を連携ログで確認する 署名不一致、時刻ずれ、権限不足、必須項目不足を記録し、連携先へ返すエラーと運用者向け調査情報を分けます。

プロンプト例

公開するAPI、呼び出し元、認証方式、署名対象、時刻ずれ許容、nonceの扱い、権限、ログ、テスト方法をまとめて伝えると、サーバー側の検証とクライアント側の疎通確認を分けて設計できます。

プロンプト 外部の予約管理システムからFBPへ予約データを登録するAPI認証を追加してください。APIクラスは *_api として分け、各入口でHMAC署名を検証してください。署名対象はHTTPメソッド、APIパス、タイムスタンプ、nonce、リクエスト本文のハッシュにし、時刻ずれとnonce再利用を拒否してください。連携先ごとにAPIキー、利用可能endpoint、最終利用日時、停止状態を管理できるようにし、署名不一致、期限切れ、権限不足、バリデーションエラーは連携ログに残してください。サンプルの認証情報や実URL、secretはテンプレートやdocsに固定しないでください。

この機能を使うときのポイント

公開するAPIを絞る外部から必要な取得、登録、更新だけを対象にし、管理画面で使う内部処理をそのまま開かないようにします。
署名対象を固定するメソッド、パス、本文、時刻、nonceなど、クライアントとサーバーで同じcanonical文字列を使えるようにします。
認証情報を分ける連携先ごとにAPIキーを分け、停止、再発行、権限変更が1社または1用途に閉じるようにします。
失敗時の返し方を決める外部へ返すエラーは簡潔にし、調査に必要な詳細は管理側の連携ログに残します。

この機能を実装するときのコツ

実装では、APIごとの処理より先に共通の認証検証を通します。署名検証、時刻ずれチェック、nonce再利用チェック、APIキーの停止確認、endpoint権限確認を共通化し、失敗した時点で処理本体へ進まない構成にします。テストでは、正しい署名のread-only API、署名不一致、古いタイムスタンプ、nonce再利用、権限外endpoint、本文改ざんを分けて確認すると、連携先へ渡す仕様書やサンプルクライアントも整えやすくなります。secretや接続先は設定値で扱い、画面、テンプレート、docs、ログへ出さない前提にします。