👓

【学習メモ】「認証」と「認可」の違いを整理してみた

に公開

はじめに

「認証」と「認可」の違いがよく分からなくなったので、自分なりに整理してみました。

認証 (Authentication) とは?

一言でいうと、「ユーザーが誰であるかを検証する仕組み」です 。

身近な例え:
「Authorization Academy」で使われている例えを借りると、認証は「建物の玄関」のようなものです 。まず本人であると確認し、建物の中に入れてもらうプロセスが認証にあたります。

具体的な技術例:

  • IDとパスワードによるログイン
  • OAuthやOpenID Connect (OIDC) を利用した「Googleでログイン」機能
  • 企業などで利用されるSAML認証

認可 (Authorization) とは?

一言でいうと、「ユーザーが何をできるかを制御する仕組み」です 。

身近な例え:
認可は「建物の中に入った後、どの部屋のドアを開けることを許可されているか」を決めるプロセスです 。玄関で本人確認が済んでも(認証)、すべての部屋(機能)にアクセスできるわけではありません。

具体的な例:

  • 「一般ユーザー」は記事を閲覧できるが、「管理者」という役割(ロール)を持つユーザーは記事の編集や削除もできる。
  • 自分が投稿したコメントは削除できるが、他人のコメントは削除できない。
  • 無料プランのユーザーは基本的な機能しか使えないが、有料プランのユーザーは全ての機能にアクセスできる。

最も重要なポイント:認証と認可の「関係性」

この2つは独立したものではなく、認可は認証を土台にして機能するという強い関係性があります 。

アプリケーションは、まず認証によって「このリクエストはユーザーAさんから来たものだ」と本人を特定します 。
次に認可の仕組みが、その「ユーザーAさん」という情報(IDなど)をインプットとして受け取り、「Aさんは管理者ロールを持っているから、この操作を許可しよう」と判断を下します。

認証がなければ、そもそも誰に権限を与えて良いのか判断できません。

まとめ

最後に、「認証」と「認可」の違いをもう一度表で整理します。

項目 認証 (Authentication) 認可 (Authorization)
目的 あなたは誰? あなたは何ができる?
例え 建物の玄関 どの部屋の鍵を持っているか
具体例 ログイン処理 権限チェック、アクセス制御

次のステップへ

今回は、認証と認可の基本的な違いについて解説しました。次回は、認可を実現するための具体的なモデルである「ロールベースアクセスコントロール(RBAC)」について、調べてみたいと思います。

参考資料

Discussion