OpenID Connect 委派 Google 既然他们正在弃用他们的 OpenID2 提供商?

OpenID Connect delegation with Google now that they are deprecating their OpenID2 provider?

多年来,我一直使用 OpenID 委托登录 Stack Overflow(以及其他站点),使用我自己的 URI 作为 OpenID,但让 Google 处理身份验证。我使用 this Stack Overflow question; so, my custom OpenID http://tupelo-schneck.org/robert 中描述的技术解析为包含以下内容的 HTML 页面:

<link href="https://www.google.com/accounts/o8/ud" rel="openid2.provider" />
<link href="https://www.google.com/profiles/schneck" rel="openid2.local_id" />  

但是,现在我已经登录到 Stack Overflow 并让 Google 告诉我“重要通知: Google 帐户的 OpenID2 即将停用2015 年 4 月 20 日。Learn more." This page 解释说 Google 已弃用 OpenID 2.0,开发人员应将其应用程序迁移到 OpenID Connect。

我可以继续使用自定义 URI 进行 OpenID 登录,但委托给 Google 的 OpenID Connect 提供商进行身份验证吗?怎么样?

假设您想使用自己的域作为用户提供的登录标识符 --

  1. 转到 https://whosebug.com/users/login-add?returnUrl=%2Fusers%2Fcurrent 并使用 Google 添加登录名。这会将 Google OpenID Connect 标识符添加到您的帐户。
  2. 在您的域中托管 OpenID Connect 发现文档(有关详细信息,请参阅 http://openid.net/specs/openid-connect-discovery-1_0.html#URLSyntax。)
  3. 等到 Whosebug 开始支持 OpenID Connect 发现
  4. 使用http://tupelo-schneck.org/robert作为用户标识符

此外,如果 Whosebug 支持 OpenID Connect Migration 1.0,并且假设 Google returns 您的自定义域 claimed_id 在迁移响应中,则:

  1. 按照 http://openid.net/specs/openid-connect-migration-1_0.html#VerifyOPAuthority 中所述在您的域中托管 JSON 文档。

会为你铺平道路。

将您的 OpenID 提供商从 Google 切换到 Yahoo!在您的站点上可能适合您,直到 Yahoo!停止其 OpenID 2.0 功能。

但是,如果您同意 Nat 的第一个建议,那么在更长的时间里它会是更稳定的方式。

OpenID Connect 支持 Discovery,即根据您提供的一些提示(电子邮件、帐户, URL, 域等);它不会为您提供永久标识符,您可以将其委托身份验证给您选择的可配置提供程序。

因此,如果您只想使用自定义 URI 来查找您的提供商,您可以使用 Nat 提供的方法(除了 Google 没有也不能做的最后一点,并假设 SO支持探索)。

但是,如果您想要真正的委托,以便 RP 可以使用 OP 返回的标识符,该标识符在您委托给的不同 OP 上保持不变,那么您不能。

对于 Whosebug,您可能不需要其中任何一个:SO 使用其自己的主要 identifier/account,您可以 link 多个帐户,包括 Google。只有当 SO 使用您的自定义 URI 作为其主要标识符时,您才会遇到问题。在这种情况下没有问题,您可以:

  1. 使用 Google 登录按钮,或
  2. 在 OpenID URL 输入框中键入您的自定义 URI,假设您和都已实施 Discovery

但是 1. 和 2. 确实产生了相同的结果:它们 发现 Google 是你想要验证的地方。