👓
【学習メモ】「認証」と「認可」の違いを整理してみた
はじめに
「認証」と「認可」の違いがよく分からなくなったので、自分なりに整理してみました。
認証 (Authentication) とは?
一言でいうと、「ユーザーが誰であるかを検証する仕組み」です 。
身近な例え:
「Authorization Academy」で使われている例えを借りると、認証は「建物の玄関」のようなものです 。まず本人であると確認し、建物の中に入れてもらうプロセスが認証にあたります。
具体的な技術例:
- IDとパスワードによるログイン
- OAuthやOpenID Connect (OIDC) を利用した「Googleでログイン」機能
- 企業などで利用されるSAML認証
認可 (Authorization) とは?
一言でいうと、「ユーザーが何をできるかを制御する仕組み」です 。
身近な例え:
認可は「建物の中に入った後、どの部屋のドアを開けることを許可されているか」を決めるプロセスです 。玄関で本人確認が済んでも(認証)、すべての部屋(機能)にアクセスできるわけではありません。
具体的な例:
- 「一般ユーザー」は記事を閲覧できるが、「管理者」という役割(ロール)を持つユーザーは記事の編集や削除もできる。
- 自分が投稿したコメントは削除できるが、他人のコメントは削除できない。
- 無料プランのユーザーは基本的な機能しか使えないが、有料プランのユーザーは全ての機能にアクセスできる。
最も重要なポイント:認証と認可の「関係性」
この2つは独立したものではなく、認可は認証を土台にして機能するという強い関係性があります 。
アプリケーションは、まず認証によって「このリクエストはユーザーAさんから来たものだ」と本人を特定します 。
次に認可の仕組みが、その「ユーザーAさん」という情報(IDなど)をインプットとして受け取り、「Aさんは管理者ロールを持っているから、この操作を許可しよう」と判断を下します。
認証がなければ、そもそも誰に権限を与えて良いのか判断できません。
まとめ
最後に、「認証」と「認可」の違いをもう一度表で整理します。
項目 | 認証 (Authentication) | 認可 (Authorization) |
---|---|---|
目的 | あなたは誰? | あなたは何ができる? |
例え | 建物の玄関 | どの部屋の鍵を持っているか |
具体例 | ログイン処理 | 権限チェック、アクセス制御 |
次のステップへ
今回は、認証と認可の基本的な違いについて解説しました。次回は、認可を実現するための具体的なモデルである「ロールベースアクセスコントロール(RBAC)」について、調べてみたいと思います。
Discussion