ログイン時にIDやメールアドレスを入力するのではなく、「Gmailでログイン」のリンクをクリックした場合、裏側では何が行われているのでしょうか?

1
2022.04.12

その質問にもっと対応できるサブグループがないかと確認したが、なかった。また、関連する質問にも目を通しましたが、該当するものはありませんでした。

stackexchange.com、superuser.comにログインすると、以下のことができます。

  1. 自分のメールアドレスとパスワードを入力する。
  2. または「Login using...」というリンクをクリックすることができます。

ここで質問です。ここでも他のサイトでも、「Login using...」リンクをクリックするのはどの程度危険なのでしょうか?

私は回答に何を期待しているのでしょうか?1) 王道を行くプログラマーからの回答、2)その他の不正なプログラマーからの回答、の2つの観点から回答してくれることです。というようなことです。

- リンクをクリックすると、パスワードを入力せずにログインできるようにするページコードは何ですか?"当たり前のことのように思えるかもしれませんが、私の目から見ると、そうではありません。怖いくらいに未知のことが起こるので、ハラハラさせられます。(明らかでないのは、superuser.com や stackexchange.com がどこで a) 私の電子メールとパスワードの組み合わせ、または単に b) 「この人のブラウザセッションで以前、彼は自分を認証して、自分がそうであると証明した」というフラッグをどこかで取得しているか、ということです)。

- 私を認証する際に、私を認証するために使用されている私の別のアカウントに何らかの形でアクセスすることができるのでしょうか?

- 私のものにアクセスできない、あるいはアクセスしたくないとしても、私のものにアクセスできるのだろうか?

- もっと恐ろしい疑問があります。他のサイトがわたしのものにアクセスすることができるのか、できないのか、それは他のサイトのページのコードのレベルや、そのページの背後にいる個人の善意や悪意に依存するのか?

質問したり説明したりするのは複雑です。私は明確であったことを望みます。

回答
1
2022.04.12

- リンクをクリックすると、パスワードを入力せずにログインできるようにするページコードは何ですか?"当たり前のように思えるかもしれませんが、私の目から見ると、そうではありません。怖い未知の部分が発生するので、ハラハラさせられます。(明らかでないのは、superuser.com や stackexchange.com がどこで a) 私の電子メールとパスワードの組み合わせ、または単に b) 「この人のブラウザセッションで以前、彼は自分を認証して、自分がそうであると証明した」というフラッグをどこかで取得しているか、ということです)。

要するに、このボタンは、「IDプロバイダ」自身がホストするURL(たとえば、Googleの場合はgoogle.comの特別ページにリダイレクトされる)にリダイレクトされ、そのURLは、他のすべてのGoogle Webサイトと同じクッキーにアクセスできるため、あなたがログインしていることがわかる。このページでは、ログイン状態を示すデジタル署名付きのトークンが作成され、元のウェブサイトにリダイレクトされます(トークンを受け取ったウェブサイトは署名を検証します)。

Log in using [website]」ボタンはすべてOAuth2プロトコル(あるいはOAuth2の拡張版であるOpenID Connect)を使用しています。StackOverflowがまだ新しかったころは、「オリジナルの」OpenIDプロトコルが使用されていました。学術・企業環境では、代わりにSAML2プロトコルを使用して行われることが多いようです。

- 私を認証する際に、私を認証するために使用されている他のアカウントに何らかの形でアクセスすることはできますか?- 私のアカウントにアクセスできない、あるいはアクセスしたくない場合でも、私のアカウントにアクセスできるのでしょうか?

OAuth2 (OpenID Connect) では、これは理論的には可能です。実際、これが OAuth の本来の目的なのです (「ログインして...」という以前の説明は少し単純化しすぎました。OAuth2 では、ウェブサイトは実際にあなたに代わって何かをする権限を与えるトークンを取得します。たまたまあなたのプロファイル情報を取得できることも含まれますが、あなたに代わってツイートを投稿するなど、他のことをする権限を与える場合もあります)。

ただし、ID プロバイダは常に、あなたがアクセスを許可しているあなたのアカウントの部分を正確に確認するよう求めます。たとえば GitHub アカウントで StackExchange に初めてサインインしたとき、すぐに StackExchange にリダイレクトされることはありません。代わりに、このようなGitHub ページが表示されてリクエストを承認するかどうか尋ねることになります。このとき、リストに目を通してそのウェブサイトが要求してはいけないものを要求していないかどうかを確認するのはあなた次第です。

StackExchangeの場合、ウェブサイトはほとんどアクセスできません。取得できるのは、あなたのメールアドレス(と固有のアカウントID)だけです。

(また、パスワードとは異なり、この認証トークンは各アプリに固有であり、個別に取り消すことができる。気が変わったときに備えて、Googleアカウントのページに戻り、アプリのアクセスをいつでも取り消すことができる)。

一方、SAML2やオリジナルのOpenIDでは、OAuth2のように認証トークンを発行しないので、これは不可能です。代わりに、ウェブサイトは「ユーザ情報」ドキュメントを直接取得するだけで、それだけで済みます。

- ここで、もっと怖い問題があります。他のサイトが私のものにアクセスできるのか、それとも他のサイトのページのコードのレベルや、そのページの背後にいる個人の善意や悪意に依存するのでしょうか?

OAuth2でもSAML2でも、"Log in with... "を実装する各ウェブサイトは一意に識別されます。例えば、新しいWebサイトで「GitHubでログイン」を実装するためには、GitHubの「Developer Settings」ページでWebサイトを登録し、「OAuth2クライアントID」を取得する必要があります。これにより、IDプロバイダはあなたがどのアプリでアカウントへのアクセスを許可したかを追跡することができます。新しいアプリがGitHubのOAuth2ログインURLから静かにリダイレクトしようとすると、そのプロセスは再び確認ページで停止されることになります。

1
2022.04.12

簡単に言うと、「Login using X」のオプションはOAuthであるということです。

OAuth (Open Authorization[1][2]) はアクセス委任のためのオープンスタンダードで、一般的にインターネットユーザーがウェブサイトやアプリケーションに 他のウェブサイト上の自分の情報へのアクセスを許可するが、パスワードは渡さない方法として使われています[3][4] このメカニズムは、Amazon, [5] Google, Facebook, Microsoft, Twitterなどの企業が、ユーザーが第三者のアプリケーションやウェブサイトと自分のアカウントに関する情報を共有できるよう使用されています。

基本的には、OAuthによって、あるサービスに対して、別のサービスでは「X、Y、Z」のみが可能であることを伝えることができます。あなたはまだパスワードを入力していますが、それはGoogleのような他のサービスのパスワードです。Googleは他のサイトに、それが有効なGoogleユーザーの有効なパスワードであることを伝え、他のサイトに「トークン」を付与し、あなたが与えたあらゆる許可を他のサイトに与えることになるのです。

しかし、あなたが指摘したように、当該サービス専用のアカウントを作成する代わりに「Xを使ってログインする」というのは、「当該サービスにこの他のサービス(サービス "X")へのアクセスを許可する」という意味合いにはならないのです。あなたは、SuperUserやStackOverflow、ServerFault、StackExchangeを、あなたのGoogleやFacebookのデータを扱うサードパーティツールとして使用するつもりはないでしょう。もちろん、SuperUserがあなたの代わりにパスワードを必要とせずにGoogleと会話できるのはいいことだし、Googleがサードパーティーのためにアクセスを制限する特定の許可を公開しているのもいいことだ。そして、あなたが望めばGoogleにログインしてSuperUserを起動できるのもいいことだが...なぜ悩むのか?

なぜなら...これらの "Login using X "ボタンは、ユーザーをYet-Another-Loginの必要性から解放してくれるからです。彼らはすでにGmailのパスワードを知っていて、代わりに「Googleを使ってログイン」をクリックするのです。少なくとも、これが「上辺だけの」説明です。ユーザーにとっての利便

さて、ログインの目的のために、ウェブサイトはおそらく多くの許可を求めるつもりはなく、「単に」識別子を求めます。GmailやFacebookのアカウントを管理する手助けをしようというわけではありません。SuperUserが保存し、ユーザー名として使用できるように、「あなたのIDまたはメールアドレスへのアクセスを許可してください」のようなプロンプトが表示されるでしょう。そうすれば、次回Googleでログインするとき、SuperUserは自分が "Gmail User with email [email protected] "であることを認識することができます。

しかし、この「Xでログイン」ボタンの人気の理由はGmailアドレスやFaceBook IDのような最小限のものでさえ、ウェブサイト運営者やオーナーは、ユーザーの一人をより広いネットワークとリンクさせたということです。他の情報とは切り離された「[email protected]」があることを知るだけではありません。Preston Maness, at [email protected] "と、Google(あるいはFacebook)はあなたのことをたくさん知っているのです。

この結びつきは、Googleにとって非常に価値のある情報であり、顧客(広告主)に対して、既知の「スーパーユーザー」を多数抱えていることを伝えることができるようになったからです。Google(またはFacebookなど)を介して広告をしたい誰もが彼らに伝えることができます ³"私は技術者に広告を出したい³"とGoogleはスーパーユーザーとリンクアップしているユーザーの素晴らしい長いリストを持っています。この聴衆は、はるかに価値がある - とはるかに多くのお金を作るでしょう - ランダムなユーザーよりも。

そして反対から言えば、SuperUserはあなたのGoogle IDを知っているのです。もしSuperUserが望めば、これらのプラットフォーム(Google、Facebook)上でカスタム広告を生成し、あなたを特別にターゲットにすることができます -- OK、技術的には、Google/Facebookユーザーの「オーディエンス」(しばしばつまらないサイズ)を「だけ」作ることができます -- プレミアム製品について。結局のところ、あなたはSuperUserにお金を払っていないのですから、SuperUserが提供する、あなたがお金を払わなければならないものについて、あなたに接触してはどうでしょうか?

ジョン・オリバーが最近、この「データ・ブローカー」という薄汚い業界について良い番組を作ったので、データがインターネット上でどのようにお金を稼ぐのか、もっと詳しく知りたい方はご覧ください。https://www.youtube.com/watch?v=wqn3gR1WTcA