バックエンドAPI

Page content

【公式ブログ】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サーバーが必要な理由は:

  1. セキュリティ(秘密情報を守る)

  2. DBを安全に扱う

  3. ビジネスロジックを隠す

  4. 外部サービスの秘密鍵を管理

  5. 権限判断(RBAC/ABAC)を行う

  6. 複数フロントから利用できる共通エンドポイント

  7. 重い処理を任せられる

Auth0 を使ってもこれは変わりません。