認証と認可

入口で本人を確かめる『認証』と、その先で権限を確かめる『認可』。混同しがちな2つを、順に通る2つの関所として整理する

この記事の要約

ログインできた=何でもできる、ではありません。入口で本人を確かめる『認証』と、操作を許すか決める『認可』は、順に通る別々の関所です。

  • 認証は『あなたは誰?』、認可は『それをしてよい?』
  • 断られ方も別 — 認証で止まれば 401、認可で止まれば 403
  • 認可は最小権限で設計し、操作のたびに確かめる

認証と認可はどう違う?

ログインできたのに『権限がありません』と断られた経験はありませんか。入口を通ることと、その先で何をしてよいかは、別々に確かめられているのです。ビルなら、受付で身分証を見せるのが認証、通行証で入れる部屋が決まるのが認可です。

リクエストが通る2つの関所

いいえはいいいえはい
認証あなたは誰?
認可してよい?
実行
利用者操作したい人
システムの関所2つの確認
通さない止める結果
アクセスしたい
あなたは誰?認証=本人確認
門前払い401 = 本人と確認できない
それをしてよい?認可=権限の確認
権限がない403 = 本人だが許可なし
実行できる200 = 許可

各工程・分岐・レーンをクリックすると、その仕組みの説明がここに表示されます。

この図をテキストで読む

業務フロー図「2つの関所 ― 認証(誰?)と認可(何をしてよい?)」。レーン3本、工程6個。 【レーン(担当)】(左から右) - 利用者: 操作したい人 - システムの関所: 2つの確認 - 通さない: 止める結果 【工程】(上から下へ。担当 → 工程名) ── フェーズ: 認証(あなたは誰?) ── 1. 利用者: アクセスしたい〔開始・終了〕 2. システムの関所: あなたは誰?〔分岐〕(認証=本人確認) いいえ → 門前払い はい → それをしてよい? 3. 通さない: 門前払い〔開始・終了〕(401 = 本人と確認できない) ── フェーズ: 認可(してよい?) ── 4. システムの関所: それをしてよい?〔分岐〕(認可=権限の確認) いいえ → 権限がない はい → 実行できる 5. 通さない: 権限がない〔開始・終了〕(403 = 本人だが許可なし) ── フェーズ: 実行 ── 6. 利用者: 実行できる〔開始・終了〕(200 = 許可)

認証で止まれば401、認可で止まれば403。

認証 と 認可 を見くらべる(早見表)

各セルをクリックすると、その意味や詳しい説明がここに表示されます。

この図をテキストで読む

比較表。2列 × 6行。 【列】 1. 認証(Authentication) 2. 認可(Authorization) 【比較】(観点ごとに) ■ 問い - 認証: あなたは誰? / 本人確認 - 認可: それをしてよい? / 権限の確認 ■ 順番 - 認証: 先(入口で) / ふつう1回 - 認可: 後(操作ごと) / 毎回チェック ■ 確かめる材料 - 認証: パスワード/コード/指紋/通行証 - 認可: 役割・権限設定・持ち主か ■ 失敗したら - 認証: 401(門前払い) / 本人と確認できない → 要ログイン - 認可: 403(権限なし) / 本人だが許可されていない ■ しくみ・例 - 認証: ログイン・MFA・SSO・トークン - 認可: 役割(RBAC)・最小権限・行レベルセキュリティ(RLS) ■ つまずきやすい点 - 認証: なりすまし対策が要 / 通行証=鍵 - 認可: 権限の渡しすぎに注意 / 最小権限で 【観点】 - 認証だけ見る: 認証 - 認可だけ見る: 認可

混同しやすい2語を6つの観点で見くらべます。

『認証だけ』で安心しない

よくある事故は、ログインは厳重なのに『このデータをさわってよいか』の確認が甘いものです。画面に出さないだけでは不十分で、サーバ側で操作ごとに認可を確かめます。URL の ID を書き換えると他人のデータが見えるのは、認可漏れの典型です。

押さえておきたい用語

認証(Authentication)
『あなたが誰か』を確かめる本人確認。パスワード・コード・指紋・通行証などで証明する。失敗すると 401。
認可(Authorization)
認証された相手が『何をしてよいか』を決める権限の確認。操作のたびに行い、許可が無ければ 403。
アクセス制御
誰に何を許す/許さないかを管理するしくみ全体。認証と認可の2段で成り立つ。
役割(RBAC)
役割(管理者・一般など)ごとに権限をまとめて割り当てる方式。1人ずつ設定するより管理しやすい認可の定番。
最小権限
各人に必要最小限の権限だけを与える原則。乗っ取られたときの被害を小さく抑えられる。
行レベルセキュリティ(RLS)
テーブルの行単位でアクセスを絞るデータベースの認可機能。『自分の行だけ』見られるように制限する。

ここから先へ

この解説とつながりのあるページ

ログインと守りの基本』の歩き方 1/5 歩目次は「ログインの裏側