認証と認可の違いをわかりやすく比較

まずは、これだけ

認証は「あなたは誰ですか」を確認すること。認可は「その人は何をしてよいですか」を確認すること。
ログインできた後でも、すべての画面や操作が使えるとは限りません。

認証で本人確認を行い、認可で使える機能や画面の権限を確認する流れ
認証:本人かどうかを確認 認可:使ってよい範囲を確認

認証は本人確認

認証は、利用者が誰なのかを確かめる処理です。メールアドレスとパスワード、パスキー、二段階認証のコードなどを使い、サービス側が「この人は登録済みの本人だ」と判断します。

ログイン画面で成功すると、アプリはその人のユーザー情報を扱えるようになります。ここで分かるのは、まず「誰か」です。

ログイン情報を使って本人確認を行い、ユーザー情報を取得する認証の流れ
認証では、ログイン情報などを使って「この操作をしている人が誰か」を確認します。
確認すること

本人かどうか、どのユーザーとして扱うか。

よくある場面

ログイン、パスキー、二段階認証、メール確認。

結果

ユーザーIDやプロフィールなど、本人にひもづく情報が分かる。

認可は権限確認

認可は、認証済みの人が、どの画面や操作を使ってよいかを確認する処理です。日本語では「許可」や「権限チェック」と言うとイメージしやすいです。

たとえば同じサービスにログインしていても、一般ユーザーは自分のプロフィールを編集できる一方で、管理者設定は開けないことがあります。この「できる・できない」を分けるのが認可です。

本人確認済みのユーザーに対して、プロフィールや管理者設定などの利用権限を確認する認可の流れ
認可では、本人確認済みのユーザーに対して「どこまで操作してよいか」を確認します。
確認すること

そのユーザーが、対象の画面や操作を使ってよいか。

よくある場面

管理画面、チームデータ、課金プラン別機能、編集権限。

結果

許可なら表示や実行、拒否ならエラーや別画面へ案内する。

順番は認証から認可へ

Webアプリでは、多くの場合、先に認証で「誰か」を確認し、その後に認可で「何をしてよいか」を確認します。誰か分からないままでは、その人にどんな権限があるかも判断できないためです。

ただし、画面を開くたびにパスワードを聞くわけではありません。ログイン後はセッションやトークンを使い、リクエストごとに本人情報と権限を確認していきます。

1 ログイン メールやパスキーなどを送る
2 認証する 本人かどうかを確認する
3 操作を要求 管理画面やデータ編集を開く
4 認可する 権限があるかを確認する
5 結果を返す 許可または拒否を返す

エラーの意味も変わる

認証と認可を分けて考えると、エラーの意味も整理しやすくなります。ログインしていない、または本人確認に失敗した場合は、認証の問題です。

一方、ログインはできているのに管理画面へ入れない場合は、認可の問題です。「あなたは誰か」は分かっているけれど、「その操作は許可されていない」という状態です。

認証エラー

ログインしていない、パスワードが違う、トークンが無効。

認可エラー

ログイン済みだが、対象の画面や操作を使う権限がない。

UIでの伝え方

ログイン案内なのか、権限不足の案内なのかを分ける。

ここまでのまとめ

認証は、利用者が誰なのかを確認する処理です。認可は、確認済みの利用者が、どの範囲まで使ってよいかを判断する処理です。

認証は「本人確認」、認可は「権限確認」。ログインできることと、すべてを操作できることは別に考えます。