API認証とセキュリティ

ポイント残高取得APIのセキュリティ設計と認証方式を解説

API認証セキュリティトークンアクセス制御
読了時間: 9分

この記事について

ポイント残高は個人情報であり、適切な認証なしにアクセスされてはいけません。複数の認証方式に対応し、セキュリティを確保する仕組みを解説します。

なぜ認証が重要なのか

認証なしの場合のリスク

他人のポイント閲覧
具体的な被害プライバシー侵害、個人情報漏洩
ポイントの不正利用
具体的な被害他人のポイントでクーポン発行
顧客リストの流出
具体的な被害顧客IDを総当たりで取得される
システムへの攻撃
具体的な被害大量リクエストによるサービス停止

守るべきセキュリティ原則

  • 認証(Authentication): リクエストが誰からのものか確認
  • 認可(Authorization): その人がアクセスする権限があるか確認
  • 監査(Audit): 全てのアクセスを記録

認証の仕組み

認証チェックの流れ

リクエスト受信

クライアントからポイント取得リクエストを受信

認証情報確認

リクエストヘッダーから認証トークンを取得

トークン検証

トークンの有効性(署名、有効期限)を検証

顧客ID取得

トークンから認証された顧客のIDを取得

所有権検証

リクエスト対象の顧客IDと認証された顧客IDが一致するか確認

アクセス許可/拒否

全て合格なら処理続行、不合格ならエラーを返却

フロー図

認証フローの詳細
クライアント

GET /api/points(Authorization: Bearer xxx)

サーバー

トークン抽出 → 署名検証 → 有効期限チェック → 顧客ID取得 → 所有権検証

認証成功
レスポンス200 OK + ポイントデータ
認証失敗
レスポンス401/403エラーレスポンス

対応している認証方式

セッショントークン認証

セッショントークン方式 - ログイン時
メールOTPでログイン

顧客がワンタイムパスワードで認証

トークン発行

サーバーがセッショントークンを発行

Cookie保存

トークンをHttpOnly Cookieに保存

XSS攻撃耐性
詳細HttpOnlyで保護
CSRF対策
詳細別途対策が必要
自動ログアウト
詳細Cookieの有効期限で実現

Shopify Customer Account API連携

Shopify OAuth方式 - ログイン時
Shopifyアカウントでログイン

顧客がShopifyの認証画面で認証

OAuthトークン発行

ShopifyがOAuthトークンを発行

顧客情報取得可能

トークンで顧客情報にアクセス可能に

認証基盤
詳細Shopifyの認証基盤を活用
パスワード管理
詳細Shopifyに委託
SSO
詳細複数店舗でのSSO可能

所有権検証の重要性

なぜ所有権を確認するのか

正常
認証トークン顧客Aのもの
リクエスト対象顧客Aのポイント
結果OK、ポイント返却
不正
認証トークン顧客Aのもの
リクエスト対象顧客Bのポイント(不正)
結果403 Forbidden

重要: 認証されていても、他人のデータにはアクセスさせない

検証ロジック

所有権検証の流れ
入力情報の取得

認証トークンから顧客ID(A)、リクエストパラメータから対象顧客ID(X)を取得

ID一致チェック

A === X か確認

結果

一致 → ポイント残高を返却 / 不一致 → 403エラー、不正アクセスとしてログ記録

セキュリティ対策

実装している対策

レート制限
目的DoS攻撃防止
実装内容同一IPから1分間に60回まで
トークン有効期限
目的漏洩時の被害軽減
実装内容7日間で失効
ログ記録
目的不正検知・追跡
実装内容全アクセスをタイムスタンプ付きで記録
エラーメッセージ制限
目的情報漏洩防止
実装内容詳細なエラー理由を返さない
HTTPS強制
目的通信傍受防止
実装内容HTTP接続を拒否

エラーレスポンスの設計

運用者向け: 詳細は管理画面で確認可能

ログと監視

記録すべき情報

タイムスタンプ
記録内容リクエスト日時
用途時系列分析
顧客ID
記録内容認証された顧客
用途アクセス追跡
IPアドレス
記録内容リクエスト元
用途不正検知
結果
記録内容成功/失敗
用途失敗率監視
エラー種別
記録内容認証/認可/その他
用途原因分析

監視アラート

即時通知
条件同一IPから短時間に大量のリクエスト
即時通知
条件認証失敗が連続で発生
即時通知
条件他人のデータへのアクセス試行
日次レポート
条件総アクセス数と失敗率
日次レポート
条件認証方式ごとの利用状況
日次レポート
条件異常なパターンの検出結果

この設計がもたらす効果

セキュリティ面

  • 他人のポイントが見られない安全な設計
  • 不正アクセスの検知と追跡が可能
  • 攻撃に対する耐性の確保

運用面

  • 問題発生時の原因特定が容易
  • セキュリティ監査に対応可能
  • 継続的な改善のためのデータ収集

関連記事