32

多年来,我一直使用 OpenID 委托登录 Stack Overflow(以及其他站点),使用我自己的 URI 作为 OpenID,但让 Google 处理身份验证。我使用这个 Stack Overflow question中描述的技术;因此,我的自定义 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 日停用。了解更多。” 此页面说明 Google 已弃用 OpenID 2.0,开发人员应将其应用程序迁移到 OpenID Connect。

我能否继续使用自定义 URI 进行 OpenID 登录,但委托给 Google 的 OpenID Connect 提供商进行身份验证?如何?

4

3 回答 3

9

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

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

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

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

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

但是 1. 和 2. 确实产生了相同的结果:他们发现Google 是您想要进行身份验证的地方。

于 2015-01-20T20:02:24.663 回答
7

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

  1. 转到https://stackoverflow.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. 等到 StackOverflow 开始支持 OpenID Connect 发现
  4. 使用http://tupelo-schneck.org/robert作为用户标识符

此外,如果 StackOverflow 支持 OpenID Connect Migration 1.0,并假设 Google 在 Migration 响应中返回您的自定义域 claim_id,则:

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

会顺利你的方式。

于 2015-01-19T10:36:13.610 回答
-4

将您的 OpenID 提供商从 Google 切换到 Yahoo! 在您的网站上可能对您有用,直到 Yahoo! 停止其 OpenID 2.0 功能。

但是,如果您同意 Nat 的第 1 条建议,那将是更长时间的更稳定的方式。

于 2015-01-20T00:25:17.480 回答