Social Login - Sign In with Google, Apple, and More
About 2 min read
ソーシャルログインとは、Google や Apple、Facebook などの SNS アカウントを使って 外部サービスにログインする仕組みです。ユーザーは新たにパスワードを作成する必要がなく、 既存のアカウント情報で手軽にサービスを利用開始できます。技術的にはOAuth 2.0 と OpenID Connect (OIDC) プロトコルに基づいており、サービス側にパスワードを 預けることなく認証が完了する点が大きな特徴です。
OAuth 2.0 / OpenID Connect の仕組み
ソーシャルログインの裏側では、OAuth 2.0 の認可コードフロー (Authorization Code Flow) が 動いています。ユーザーが「Google でログイン」ボタンを押すと、まず Google の認証画面に リダイレクトされ、ユーザーが許可を与えると認可コードがサービス側に返されます。 サービスはこの認可コードを使って Google からアクセストークンと ID トークンを取得し、 ユーザーの識別情報 (メールアドレス、名前など) を受け取ります。 重要なのは、サービス側がユーザーのパスワードに一切触れない点です。 パスワードの検証は Google 側で完結するため、サービスのデータベースが侵害されても パスワードが漏洩するリスクがありません。
Google、Apple、Facebook ログインの違い
同じソーシャルログインでも、プロバイダーごとにプライバシーへの姿勢は大きく異なります。 Apple の「Sign in with Apple」は、ユーザーのメールアドレスを隠蔽するリレー機能を 提供しており、サービス側にはランダムなメールアドレスだけが渡されます。 Google ログインはメールアドレスとプロフィール情報を共有しますが、 スコープ (共有範囲) をユーザーが細かく制御できます。 Facebook ログインは歴史的に広範なデータアクセスを要求する傾向があり、 2018 年の Cambridge Analytica 事件では、ソーシャルログイン経由で 数千万人分のデータが不正に収集されたことが発覚しました。 プロバイダーの選択は、単なる利便性ではなくプライバシー保護の観点からも 慎重に判断すべきです。
利便性とリスクのトレードオフ
ソーシャルログインの最大の利点は、パスワード疲れの解消です。 平均的なユーザーは 100 以上のオンラインアカウントを持つとされ、パスワードマネージャーを 使わない限り、パスワードの使い回しが常態化します。ソーシャルログインはこの問題を 緩和しますが、別のリスクを生みます。最も見落とされがちなのが権限の過剰付与です。 ログイン時に「連絡先へのアクセス」「投稿の閲覧」といった不要な権限を 求められることがあり、安易に許可すると個人情報が広範に共有されます。OAuth 権限のリスクについて 詳しく解説した記事も参照してください。
認証とプライバシーの両立について、web authentication security books (Amazon)も参考になります。
SNS アカウント凍結時のリスク
ソーシャルログインに依存するサービスでは、SNS アカウントが凍結・削除された場合に 連鎖的にアクセスを失う危険があります。SNS プラットフォームのアカウント凍結は 予告なく行われることがあり、異議申し立てに数週間かかるケースも珍しくありません。 その間、ソーシャルログインでしかアクセスできないサービスは完全に利用不能になります。 対策として、ソーシャルログインで登録した後にメールアドレスとパスワードによる 代替ログイン手段を設定しておくことが重要です。シングルサインオンと同様に、 単一障害点 (Single Point of Failure) を作らない設計が求められます。
プライバシーの観点
ソーシャルログインを利用すると、SNS プロバイダーはユーザーがどのサービスに いつログインしたかを把握できます。これはクロスサイトトラッキングの一形態であり、 広告ターゲティングに活用される可能性があります。GDPR をはじめとする プライバシー規制の観点からも、ソーシャルログインで共有されるデータの範囲を ユーザーが正確に理解し、不要な権限は拒否する習慣が大切です。プライバシー設定ガイドで、 各プラットフォームの権限管理方法を確認できます。フィッシング攻撃では、 偽のソーシャルログイン画面を表示してアクセストークンを窃取する手口も確認されており、 ログイン画面の URL が正規のものであることを必ず確認してください。
Was this article helpful?