ソーシャルログインは、Googleなどの外部サービスに本人確認を手伝ってもらうログイン方法です。
OAuthは、その裏側で「どの情報へのアクセスを許可するか」を安全にやり取りするための考え方です。今のWebでは、主にOAuth2というバージョンが使われます。
ソーシャルログインは「代理確認」
ソーシャルログインは、「Googleでログイン」「Xでログイン」「GitHubでログイン」のように、すでに使っている外部サービスのアカウントでアプリへ入る方法です。
アプリがあなたのGoogleパスワードを受け取るわけではありません。本人確認は外部サービス側で行い、アプリは「この人は確認済みです」という結果を受け取ってログイン状態にします。
新しいパスワードを作らず、見慣れた外部アカウントでログインできる。
パスワードを直接預からず、外部サービスの確認結果を使える。
本人確認を行い、許可された範囲の情報だけをアプリに渡す。
ログインの途中で「許可画面」が出る
ソーシャルログインでは、アプリから外部サービスのログイン画面へ移動することがあります。そこで本人確認をしたあと、「このアプリにプロフィール情報やメールアドレスの利用を許可しますか」という画面が表示されます。
この許可画面が大事です。利用者が許可すると、外部サービスはアプリへ「許可された範囲で使えるしるし」を返します。アプリはそれを使って、必要な情報を確認したり、ログイン状態を作ったりします。
OAuthとOAuth2の関係
OAuthは、外部サービスの情報をアプリに使わせるときの「許可の渡し方」として広く使われる呼び名です。会話の中では「OAuthでログインする」とまとめて呼ばれることも多くあります。
その中でも、現在のWebサービスでよく使われるのがOAuth2です。この記事では、初心者向けにOAuthという大きな名前で全体像を見つつ、実際によく登場するOAuth2を中心に説明します。
ここで少しややこしいのは、OAuth2の中心は本来「認証」ではなく認可だという点です。つまり、「あなたが誰か」を確認する話だけでなく、「このアプリが何をしてよいか」を決める話でもあります。
利用者が誰なのかを確認すること。ログインでよく出てくる考え方。
そのアプリが、どの情報や操作にアクセスしてよいかを決めること。
認可を安全にやり取りするための仕組み。トークンを使って範囲を表す。
アクセストークンは「許可証」のようなもの
OAuthの流れでは、アクセストークンという言葉がよく出てきます。これは、アプリが外部サービスへアクセスするときに使う「許可証」のようなものです。
アクセストークンには、有効期限や使える範囲が設定されます。たとえば「プロフィールは読めるが、勝手に投稿はできない」のように、必要な範囲だけに絞る考え方が大切です。
プロフィール、メールアドレスなど、必要な情報だけを許可する。
ずっと使える許可証にせず、期限や再発行の仕組みを持たせる。
トークンが漏れると、許可された範囲で悪用される可能性がある。
パスキーや多要素認証とは役割が違う
最近はパスキーや多要素認証もよく聞きます。これらは主に「本人確認をどう強くするか」に関わる仕組みです。一方、OAuth2は「アプリにどこまで許可するか」を安全に渡す仕組みです。
実際のサービスでは、外部サービス側のログインにパスキーや多要素認証が使われ、その結果をもとにソーシャルログインが進むこともあります。似た場面に出てきますが、担当している役割は分けて考えると混乱しにくくなります。
パスワードの代わりに、端末や生体認証などで本人確認する。
パスワード以外の確認を足して、ログインを強くする。
本人確認後、アプリに渡す許可の範囲をトークンで扱う。
ここまでのまとめ
ソーシャルログインは、Googleなどの外部サービスに本人確認を手伝ってもらい、アプリ側でログイン状態を作る方法です。OAuthはその裏側にある許可の考え方で、今のWebではOAuth2として使われる場面が多くあります。
OAuthは「外部サービスの情報を使う許可を渡す考え方」。OAuth2は「そのために今よく使われる仕組み」と覚えると、全体像をつかみやすくなります。
このUIを実装してみよう