バックエンドAPI
【公式ブログ】Protecting REST APIs Behind Amazon API Gateway Using Okta https://auth0.com/blog/protecting-rest-apis-behind-aws-api-gateway/
Webアプリにバックエンドの APIサーバーが必要になる主な理由 は、大きく分けて セキュリティ・データ管理・ビジネスロジック・外部サービス連携 の4つです。わかりやすく整理して解説します。
✅ Webアプリにバックエンド API サーバーが必要になる理由
1. セキュリティを守るため(最重要)
フロントエンド(ブラウザ側)はユーザーに公開されるため、秘密情報を置けない し、信頼できない環境 です。
バックエンドはサーバー側で公開されないため:
-
認証(Auth0 など)
-
データベース接続情報(DBパスワード)
-
APIキー(Stripe、SendGridなど)
-
ビジネスロジック
これら “秘密にすべき処理” を安全に実行できます。
🔒 バックエンドがないと誰でも勝手にDBを改ざんできてしまう
→ だから必須。
2. データベースに直接アクセスさせないため
ブラウザからDBに直接つなぐと:
-
DBのパスワードが漏れる
-
SQLを書き換えてデータを破壊される
-
全データがダウンロードされる
バックエンドAPIは DBとフロントの間のゲートキーパー です。
[ブラウザ] → (安全なリクエスト) → [APIサーバー] → DB
3. ビジネスロジックを隠すため
例:
-
「在庫が何個以上なら特別割引」
-
「このユーザーの権限なら編集可能」
これをフロントだけで実装すると、ユーザー側で書き換えられます。
バックエンドで実行することで:
-
改ざんできない
-
共通のロジックとして複数サービスから使える
4. 外部サービスとの連携(トークン・秘密鍵を安全に扱う)
Stripe, PayPal, AWS S3 などは 秘密キーを使う 必要があります。
ブラウザに秘密鍵を置くのは不可能(盗まれるため)。
→ バックエンドAPIが必要。
5. 認可(RBAC / ABAC)を判断する場所が必要
Auth0で認証(ユーザーが誰か)はできても、
-
このユーザーが投稿を編集できるか?
-
管理者だけこのAPIを叩けるか?
などの 権限判定(Authorization) はバックエンドが担います。
6. 複数のフロントエンドから統合して使える
APIサーバーを用意すると、フロントを複数にしても同じAPIを利用できます。
-
Webアプリ
-
スマホアプリ
-
IoT
-
他社サービス連携
バックエンドAPIが1個あれば、どこからでも利用可能に。
7. 処理の高速化や非同期処理
フロントでは重い処理ができません。
例:
-
大量データの集計
-
AI推論
-
PDF生成
-
バッチ処理
これらはサーバー側で行う必要があります。
🔎 Auth0 を使っても API が必要な理由
Auth0 は 認証(ログイン) を提供するサービスであり、
-
アプリのビジネス処理
-
DBの読み書き
-
外部APIとの連携
-
認可処理(実行可否の判断)
などはやってくれません。
つまり、Auth0を使ってもアプリはこうなります:
ブラウザ
↓(Access Token を持つ)
APIサーバー(AccessTokenを検証して DB 操作)
↓
DB
Auth0はログイン部分だけ担当し、
アプリの“本体”はAPIサーバーが動かします。
⭐ まとめ(最重要ポイント)
WebアプリにバックエンドAPIサーバーが必要な理由は:
-
セキュリティ(秘密情報を守る)
-
DBを安全に扱う
-
ビジネスロジックを隠す
-
外部サービスの秘密鍵を管理
-
権限判断(RBAC/ABAC)を行う
-
複数フロントから利用できる共通エンドポイント
-
重い処理を任せられる
Auth0 を使ってもこれは変わりません。