はじめに
個人開発する中でよく出てくる「認証(Authentication)」と「認可(Authorization)」。
二つの単語の違いを認識していなかったので、調べてまとめました。
認証(Authentication)とは?
目的:その人が「誰か」を確認すること
具体例
- ユーザー名とパスワードでログイン
- 指紋認証や顔認証
- GoogleやGitHubなどのOAuthログイン
イメージ
「あなたは本当にAさんですか?」を確認するプロセス。
認可(Authorization)とは?
目的:その人が「何をしてよいか」を制御すること
具体例
- 一般ユーザーは自分のプロフィールしか編集できない
- 管理者はすべてのデータにアクセス可能
- フリープランでは一部機能が制限される
イメージ
「Aさんはこの操作をしていいのか?」を確認するプロセス。
認証と認可の関係
フェーズ | 処理内容 | 具体的な意味 |
---|---|---|
1️⃣ 認証 | 誰かを確認 | Aさんであることを確認する |
2️⃣ 認可 | 権限を確認 | Aさんに管理画面のアクセス権があるか確認する |
よくある混同
- 「認証した=すべての操作ができる」は誤解。
認証されても、認可されていなければアクセスできない機能があり得る。
補足:認証・認可の技術例
項目 | 一般的な技術・手法 |
---|---|
認証 | JWT, OAuth, Firebase Auth, Supabase Auth など |
認可 | RBAC(ロールベースアクセス制御), ABAC(属性ベース)など |
まとめ
用語 | 目的 | 例 |
---|---|---|
認証 | 本人確認 | ログイン処理など |
認可 | 権限確認 | 機能やデータへのアクセス制御 |
少しでも理解の助けになれば嬉しいです!
よければ「いいね」や「ストック」もよろしくお願いします 🙌