VCA

認証・認可 Auth

Auth は二つの問いに答えます。あなたは誰か(認証)、そして何ができるか(認可)。

更新日 約2分で読了編集方針#システム基礎#セキュリティ#ログイン

ひとことで言うと

Auth は『あなたが誰か』と『何ができるか』を扱う、システムセキュリティの最初の扉です。

かんたんに言うと

Auth は、実は二つのことの総称です。認証(Authentication) は「あなたがあなたであることの証明」——ユーザー名とパスワードを入力したり、Google でログインしたり。認可(Authorization) は「あなたに何ができるかの判定」——たとえば、一般の利用者は管理画面に入れません。

ログインに成功すると、システムはあなたに「通行証」(トークンまたはセッション)を発行します。以後のリクエストは毎回それを携え、システムはパスワードを再び尋ねなくても、それがあなただとわかります。この通行証には有効期限があり、撤回できなければなりません。さもなければ、盗まれたときに危険です。

アーキテクチャ

動作の流れ

本当に漏洩を招く間違い

Auth の惨事のほとんどは奇抜なものではなく、繰り返し起こる少数の間違いから生まれます。

  • フロントエンドのチェックを信用する——管理者ボタンを隠しただけで、バックエンドのエンドポイントは開いたまま。直接呼べば誰でも入れてしまう。
  • トークンに期限がなく、撤回もできない——盗まれた通行証が、それきり永遠に有効になる。
  • パスワードを平文で保存する——データベースが一度漏れれば、すべてのアカウントが同時に晒される(パスワードはハッシュ化すべき)。
  • あるエンドポイントで認可チェックを忘れる——「あなたに許されているか」を問わない経路が一つあれば、攻撃者にはそれで十分。

よくある誤解:「ログインが動く = Auth は完成」という思い込み。ログインは「あなたが誰か」(認証)に答えるだけです。あらゆる機微な操作には、バックエンドで「あなたに許されているか」を改めて確かめる別のチェック(認可)が必要です——そして通行証(トークン)には有効期限と撤回の手段が要ります。さもなければ、盗まれた一つがいつまでも有効なままになります。

まとめ

  • Auth = 認証(あなたが誰か)+ 認可(何ができるか)。
  • ログイン後はトークン / セッションを通行証として使う——有効期限と撤回の手段を備えて。
  • 認可チェックは必ずバックエンドで。フロントエンドでボタンを隠すのは安全ではない。

身近なたとえ

オフィスに入るのと同じ。社員証をかざして社員だと示し(認証)、入退室システムがどの階に入れるかを決める(認可)。

長所

  • 利用者のデータを、他人に見られたり書き換えられたりしないよう守る
  • 役割ごとに、誰が何をできるかを制御できる
  • 標準的なやり方が成熟しており、AI が安全なテンプレートを生成できる

短所

  • 間違えればセキュリティの穴になり、結果は深刻
  • トークンやセッションといった概念は、初心者には抽象的

向いている場面

  • 会員、管理画面、有料機能のあるシステム
  • 複数人で協働し、権限の段階分けが必要なプラットフォーム

向かない場面

  • 個人データのない、完全に公開された静的サイト

初心者スコアカード

初心者おすすめ度
2/5
学習コスト(高いほどコスト大)
4/5
市場ニーズ
5/5
AI生成のしやすさ
4/5

よくある質問

認証(Authentication)と認可(Authorization)の違いは?

認証は「あなたは誰か」(ログインなど本人確認)、認可は「何ができるか」(他人のデータを消せるか等の権限確認)です。どちらも欠かせません。

ユーザーのパスワードは自分で保存すべき?

可能なら避けましょう。OAuth(Google/GitHubでログイン)や成熟した認証サービスを優先。どうしても自前なら、パスワードは必ずハッシュ化(bcrypt等)し、平文では絶対に保存しません。

JWTとセッション、どちらが安全?

どちらも安全で、違いは管理方法です。セッションは即時失効が容易、JWTはステートレスな拡張に向きます。初心者はプラットフォーム標準の仕組みを使い、認証を自作しないこと。

CRMルート の次のステップ: AIでログイン

SaaSルート の次のステップ: キーとシークレット