1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎉【初心者向け】OAuth認証とは?仕組み・流れを図解でやさしく解説

1
Posted at

👋 はじめに

Webサービスを開発していると必ず目にする 「OAuth(オーオース)」。

  • 「Googleでログイン」

  • 「GitHubでログイン」

  • 「X(Twitter)でログイン」

こうしたボタンの裏側で動いている仕組みです。

この記事では、

  • OAuthって何?
  • なぜ必要?
  • どう動く?

を図解付きでやさしく解説します。

🔍 1. OAuthとは?

OAuthとは、

「ユーザーの代わりに、他のサービスの 認可 を借りる仕組み」
「GoogleやGitHubに、代わりに本人確認をしてもらう仕組み」
「本人確認はプロ(Google・GitHub)に任せて、その結果だけ借りてくる仕組み」

のようなことです。こんな表現でどうですか。

もっとシンプルに言うと、「Google でログインしていいよ」と許可してもらう方式です。

  • サービスはパスワードを扱わない

  • 本人確認は 「Google / GitHub / X など」 が担当してくれる

とても安全な仕組みです。

🔒 2. OAuthは「認証」ではなく「認可」

初心者が最初に混乱するポイントですが、OAuthは本来

  • 認証(Authentication)=本人確認

  • 認可(Authorization)=操作の許可

のうち 認可 の仕組みです。

🧠 でも「なにを誰が誰に認可しているの?」が混乱ポイント

これを正確に分解するとこうなります:

🧍 ユーザー

→ Google に「このアプリに私の情報を教えてもいいよ」と 許可 する。

🖥️ Web アプリ(クライアント)

→ Google に「ユーザーの許可をもらったので、認可コードをください」と 要求 する。

🟦 Google(認可サーバー)

→ 「よし、ユーザーに許可されたから認可コードをWebアプリに発行します」
→ その後アクセストークンを発行する。

🔁 認可の流れを超シンプルにすると…

① Webアプリ → Google

「ユーザーの情報にアクセスする許可をください」

② Google → ユーザー

「このアプリに情報を渡していいですか?」(許可画面)

③ ユーザー → Google

「はい、いいですよ」ボタン

④ Google → Webアプリ

「OK!この“許可”の証拠(認可コード)を渡します」

つまり本質的には:

  • ユーザーがアプリに許可を与える

  • Googleがアプリに“ユーザーデータにアクセスしていいよ”と 認可 を与える

という2段階構造になっています。

🎯 3. OAuthが使われる理由

✔️ ① パスワードを扱わずに安全

サービス側はユーザーのパスワードを保存しない。
パスワードの漏洩リスクが圧倒的に減ります。

✔️ ② 外部サービスの信頼を利用できる

ユーザーは Google や GitHub でログインできる安心感があります。

✔️ ③ ユーザーが便利

新しいパスワードを作らずに済み、ボタンひとつでログインできます。

🏠 4. OAuthを生活の例で理解しよう

▼ マンションの “管理人が本人確認してくれる” イメージ

もっとシンプルに考えると、アプリがユーザーの身元を直接確認するのではなく、Google(管理人)に本人確認を任せる イメージです。

  1. 住 民:「アプリさんこんにちは。僕だけど入ってもいい?」

  2. アプリ:「管理人さん、この人は住民ですか?」

  3. 管理人:「この人は本物の住民ですよ」

  4. アプリ:「OK、通ってどうぞ」

これが OAuth の概念。

🔁 5. OAuthの流れ(図解)

📘 Authorization Code Flow の全体像

ポイントは

  • 認可コード → トークンをもらうための「引換券」

  • アクセストークン → ユーザー情報にアクセスする鍵

という流れです。

🔑 6. OAuthで使われる3種類のトークン

🔹 認可コード(Authorization Code)

アクセストークンをもらうための短命で安全な「引換券」。

🔹 アクセストークン(Access Token)

ユーザー情報を取得するための鍵。

🔹 リフレッシュトークン(Refresh Token)

アクセストークンの更新時に使用する。
アクセストークンは期限が短いため、期限が切れたときに使用し、サーバーにアクセストークンを再発行してもらう。
長寿命なので厳重な管理が必要。

🧭 7. OAuthの方式(Grant Type)

✔️ Authorization Code Flow(最も一般的)

Webアプリやサーバーアプリで使われる標準。

✔️ Authorization Code Flow + PKCE(現代の主流)

  • SPA(React)

  • モバイルアプリ

など、フロントエンド中心のアプリで強く推奨されます。

いま新しく OAuth を実装するなら これ一択 です。

⚠️ 8. OAuthログインの注意点

🔐 HTTPSは必須

トークンが盗まれると危険だから。

🎯 リダイレクトURLの設定が重要

GoogleやGitHub側に登録されていないURLを使うとエラーになる。

🔄 外部サービスの仕様変更に注意

Google、Facebook は仕様変更が時々あるので注意が必要です。

📝 9. まとめ

この記事では、OAuthの次のポイントを解説しました。

  • 🌟 OAuth=外部サービスに本人確認を任せる仕組み

  • 🔐 パスワードを扱わないため安全

  • 🎉 ユーザーが便利になる

  • 🔄 認証ではなく認可

  • 🧭 Authorization Code Flow + PKCE が現代の標準

  • 👀 「Googleログイン」はOAuthの典型例

OAuthは最初こそ難しく感じますが、
「Googleが代わりに本人確認してくれる仕組み」
と理解すれば一気にイメージが掴めます。

🏁 10. さいごに

最後までご覧いただきありがとうございました。これからもいろいろな初心者向けの記事を作成していきますでの、よろしくお願いします。
よかったら他の記事もご覧いただけると嬉しいです。今後もよろしくお願いいたします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?