API認証とセキュリティ

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

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

この記事について

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

なぜ認証が重要なのか

認証なしの場合のリスク

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

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

認証の仕組み

認証チェックの流れ

リクエスト受信

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

認証情報確認

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

トークン検証

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

顧客ID取得

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

所有権検証

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

アクセス許可/拒否

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

フロー図

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

GET /api/points(Authorization: Bearer xxx)

サーバー

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

対応している認証方式

セッショントークン認証

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

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

トークン発行

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

Cookie保存

トークンをHttpOnly Cookieに保存

Shopify Customer Account API連携

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

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

OAuthトークン発行

ShopifyがOAuthトークンを発行

顧客情報取得可能

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

所有権検証の重要性

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

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

検証ロジック

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

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

ID一致チェック

A === X か確認

結果

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

セキュリティ対策

実装している対策

エラーレスポンスの設計

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

ログと監視

記録すべき情報

監視アラート

この設計がもたらす効果

セキュリティ面

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

運用面

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