将 OpenID 委托给 Google(不是 Google Apps)

Posted

技术标签:

【中文标题】将 OpenID 委托给 Google(不是 Google Apps)【英文标题】:Delegate OpenID to Google (NOT Google Apps) 【发布时间】:2011-02-02 05:56:30 【问题描述】:

是否可以使用我的个人网站/博客登录使用 openid 的网站,并委托给我的 Google 帐户?


好的,我在 SO 上搜索了这个问题,但没有好的答案。花了一些时间后,我想出了如何做到这一点。我将自己回答这个问题,以分享它。

【问题讨论】:

添加对您自己问题的回答并标记为正确,这样每个人都会以更持久的方式看到答案 感谢奥斯卡的提示!但是我现在无法将答案标记为正确。它说我必须等到明天。 我已将答案从问题中移到您的答案中,希望您不介意,但这就是通常使用 SO 的方式。 @tjrobinson 非常感谢! :) 我希望问题没有被修改,因为现在我不明白答案。 【参考方案1】:

现在可以将 OpenID 委托给您的 Google 帐户(不是 Google Apps)

不,这不是使用 App Engine 使用 demo OpenID provider。这是您真正的 Google 帐户!

首先您需要启用您的Google Profiles。尝试查看您的个人资料并进行编辑,应该有一个选项来设置您的个人资料 URL。您有两个选择:使用您的 Gmail 帐户名称(不带 @gmail.com 部分)作为您的个人资料 ID,或者使用分配给您的随机数。由您决定使用哪一个。无论哪种方式,该 ID 都是您下面的个人资料 ID。

现在将以下 html 代码添加到您的委托页面:

<link rel="openid2.provider" href="https://www.google.com/accounts/o8/ud?source=profiles" /> 
<link rel="openid2.local_id" href="https://profiles.google.com/[YOUR PROFILE ID]" /> 

它已经完成了。现在尝试使用您的自定义网址登录 SO!

【讨论】:

是否可以像 MyOpenID 一样为我提供谷歌主机委托页面? 由于 google 现在都加号了,profiles.google.com 网址不再是您转到“我的个人资料”时得到的网址,但是,如果您的个人资料是 plus.google.com/107217643432815688625/posts,那么 profiles.google.com/107217643432815688625 仍然似乎可以作为您的 openid2.local_id 目前在G+,需要输入:&lt;link rel="openid2.provider" href="https://www.google.com/accounts/o8/ud" /&gt; &lt;link rel="openid2.local_id" href="https://plus.google.com/GPLUSID" /&gt; @ChrisQuenelle 根据我的经验,当您更改您的委托时,唯一发生的事情就是您被定向到新站点进行身份验证。第一个站点仍然知道您作为您委派的站点的身份。因此,切换您的身份验证提供程序非常轻松。 @Sebi,我尝试了您的 link 元素,但它使用我的 Google 身份作为我声称的身份,而不是我的委托 URL*。此外,它还询问我想使用当前两个登录帐户中的哪个帐户,因此显然plus.google.com 不是要使用的正确主机名。我使用profiles.google.com 代替我的gmail 名称,它按预期工作。我还没有检查如何使用带有 Plus 身份的profiles.google.com。 *SuperUser 要求为myname@gmail.com 创建一个新帐户,而不是根据我提供的 OpenID URL 登录我现有的帐户。【参考方案2】:

不管接受的答案是什么,您不需要加入 Google+ 以使用 Google 作为代表,因为您已经有一个本地 ID,它是您电子邮件中 ​​@ 之前的一部分。

鉴于现有的 Google 帐户 some-name@gmail.com,您只需在您的委托页面 head 部分中提供以下两个链接:

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

我只是这样做了,并且在没有加入 Google+ 的情况下验证了它可以正常工作。

【讨论】:

【参考方案3】:

Google 帐户的 OpenID 2.0 已停用 https://support.google.com/accounts/answer/6206245

【讨论】:

以上是关于将 OpenID 委托给 Google(不是 Google Apps)的主要内容,如果未能解决你的问题,请参考以下文章

如何将身份从 Web 应用程序委托给 WebAPI

在 OpenID Connect 中,是不是可以将 id 令牌而不是访问令牌传递给资源服务器进行授权?

OpenIdConnect 从 OpenId 提供者验证 jwt

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

仅向 Google 网站登录请求“openid”范围