1

出于好奇,当我通过 OpenID 或类似(Google、Facebook 等)登录到 StackOverflow 之类的网站时,我也会登录到身份提供者本身(例如 Google)。

有没有一种方法可以让用户使用第三方身份登录我的网站,而无需登录该身份本身?

我知道通过使用 Google 登录,Google 登录的工作方式与其他人不同。我对所有流行的登录服务(谷歌、Facebook、Twitter……)的一般答案感兴趣,无论它们是基于 OpenID (2.0)、OAuth 还是专有解决方案,例如:“使用 OpenID,它可以工作如果你做某事。对于谷歌来说,这是不可能的,因为技术原因。

4

2 回答 2

2

OpenID/OAuth 是一种通用“协议”,它允许站点(例如 stackoverflow)驻留在身份提供者(例如 Google)上以进行身份​​验证。这包括一项交易,其中

  1. 你告诉stackoverflow你将使用goole登录
  2. stackoverflow 将发送到 Google 以使用重定向 url 进行身份验证。
  3. Google 将对您进行身份验证,有效地将您登录到他们的服务中(以便知道您是您)
  4. Google(和任何其他身份提供商)应该询问您是否希望将您的电子邮件和其他信息发送到 stackoverflow
  5. 如果您同意谷歌会将此信息发送给消费者(stackoverflow)
  6. 从这一点开始,由身份验证消费者(例如stackoverflow)来接受此信息(您的电子邮件)为有效。

任何不通过 ID 提供者登录的方案(第 3 步),都会将您的凭据暴露给(可能)不受信任的第三方(您是否希望通过 stackoverflow 获得您的谷歌密码?)

第 3 步还会在您的计算机上安装一个 cookie,其中包含您与 Google 的会话。由 Google(或任何 ID 提供商)决定是否认为此会话对所有其他用途(Gmail 等)有效,但无论如何它是一个方便的功能

如果您已经与 Google 建立了会话,则可能不需要您再次登录。

于 2016-11-03T10:35:23.793 回答
0

您描述的行为是可能的(并且 IDP 可以轻松实现它)但由于多种原因是不可取的。

  1. 它训练用户进行网络钓鱼。因为点击“登录”后,用户应该输入 id 和 pw,所以可以很容易地显示一个登录页面,用户将输入他们的信息。
  2. 当然,这对用户来说并不方便。
  3. 从风险和 pw 破解的角度来看,最好在用户登录时进行大量“检查”,并且可能需要额外的检查(例如 ping 电话或提问),然后创建登录会话。

我理解用户不应该作为副作用登录 IDP 的愿望,如果您正在编写 IDP 代码或提醒用户在他们返回您的站点时退出 IDP,您可以轻松实现这一点。

于 2016-11-04T08:42:30.693 回答