認証について整理 Next.js+Auth.js
認証について整理
認証まわりの用語と概念の整理
Links
環境
Next.js+Auth.js
認証と認可の違い
「認証(Authentication)」と「認可(Authorization)」は似た言葉ですが、目的がまったく違います。
| 用語 | 英語 | 何を確認しているか | 例 |
|---|---|---|---|
| 認証 | Authentication | 「あなたは誰?」 | ログイン(本人確認) |
| 認可 | Authorization | 「何をしていい人?」 | 管理画面を見られるか、データを編集できるかなど |
例:建物に入るとき
認証:
入口の警備員が「社員証を見せてください」と本人確認。
「この人はXXXさんですね」と確認。
認可:
中に入ってから「どの部屋に入っていいか」を確認。
「XXXさんは3階のQA部門の部屋までは入ってOK、社長室はNGです。」
つまり:
認証 = 本人確認
認可 = 権限確認
OAuth とは
**OAuth(オーオース)**とは、インターネット上で 「他のサービスのアカウントを使って安全にログインしたり、データへのアクセスを許可したりする仕組み」 のことです。
図
🧩 1. どんなときに使うの?
たとえば、あなたが新しいアプリに登録するときにこんなボタンを見たことがありませんか?
「Googleでログイン」
「Facebookでログイン」
「Twitterでログイン」
このとき使われている仕組みが OAuth(オーオース) です。
2. 何をしている仕組みなの?
OAuthでは、アプリに 「あなたのパスワードを渡さずに」、他のサービスのデータを使う許可を与えます。
例:Googleアカウントでログインする場合
- アプリAが「Googleでログイン」ボタンを出す
- あなたがGoogleにログインする(Googleのページで)
- Googleが「このアプリにプロフィール情報を渡してもいいですか?」と確認
- 「許可」すると、GoogleがアプリAに「この人は本人です」という**証明書(トークン)**を発行
- アプリAはそのトークンを使って、Googleの一部データ(例:メールアドレスや名前など)を取得
つまり、アプリAは あなたのパスワードを知らなくても、「Google本人確認済みです」としてログインできます。
3. OAuthの重要な考え方:トークン
OAuthでは、ユーザーの代わりに「トークン(通行証)」が使われます。
| 種類 | 役割 |
|---|---|
| access_token | 一時的にデータへアクセスするための鍵(短期間で失効) |
| refresh_token | access_token が切れたときに再発行するための鍵(長期間有効) |
※これらは「パスワードの代わりに使う一時的な鍵」です。
4. OAuthのメリット
✅ 安全性が高い
→ パスワードを他のアプリに教えなくていい
✅ 便利
→ 新しいアカウント登録をしなくても、既存のGoogleやAppleアカウントでログインできる
✅ 権限を限定できる
→ 「メールアドレスだけ許可」「カレンダーはダメ」など細かくコントロールできる
5. OAuthを使っている代表的なサービス
- Google ログイン
- Facebook / Instagram ログイン
- Twitter (X) ログイン
- GitHub ログイン
- LINEログイン など
🔍 6. まとめ
| 項目 | 内容 |
|---|---|
| 名前 | OAuth(Open Authorization) |
| 意味 | 他のサービスの認証情報を安全に使う仕組み |
| 使う場面 | 「○○でログイン」ボタンなど |
| メリット | パスワード不要、安全で便利、権限を細かく設定可能 |
希望があれば、
🔹「OAuth 1.0」と「OAuth 2.0」の違い
🔹「OAuth」と「OIDC(OpenID Connect)」の違い
🔹「NextAuth.js で OAuth を使う実例」
なども、図付きで説明できます。
どれを知りたいですか?
Discussion