27

我在我的主域 example.com 上建立了一个项目,然后将其移至子域 sub.example.com

现在,当我尝试将相同的(默认 ASP.NET MVC 或在我的 Discourse 论坛上)项目与 OpenId 一起使用并单击 Google 按钮以使用我的 Google 帐户登录时,它会引发以下错误 -

  1. 那是一个错误。

    OpenID auth request contains an unregistered domain: http://sub.example.com

我试过用谷歌搜索这条消息,但显然我是前四个看到它的人之一。这里有什么想法吗?

4

7 回答 7

29

根据此页面Google 于 2014 年 5 月关闭了对新 OpenID 2.0 客户的注册,并将于 2015 年 4 月关闭 OpenID 2.0 服务。

一些主机工作而一些不工作的原因是虽然谷歌没有添加新的主机,但您仍然可以使用已经注册的主机。

更新:有些人要求简单解释如何解决这个问题,或者如何继续。

基本上,您现在有 2 个选项。

使用 OAuth 2.0(而不是 openID 协议和旧版本的 OAuth)

或者

使用 Google+ 登录(Google 试图将您“推向”)

有关更多详细信息,请查看迁移指南:

https://developers.google.com/+/api/auth-migration#userinfo

于 2014-05-21T15:42:01.453 回答
5

我想为这个线程添加一些上下文,以及为当前被阻止的开发人员提供的潜在解决方案。

早在 2 月,我们就宣布计划于 2015 年 4 月弃用OpenID 2.0 (OID2)。我们还宣布,在 2014 年 4 月之后将不再接受新的 OID2 依赖方 (RP) 注册†</sup>。

鉴于 API 将在不到一年的时间内关闭,我们的意图是避免让的 RP 与 Google 的 OID2 API 集成。相反,我们建议使用我们认为更安全且更易于实施的OpenID Connect API 。

注册实际上已于 5 月 19 日结束(如Google 的 OID2 开发人员文档中所述)。所有已经使用 OID2 的 RP 不应受此关闭的影响。

对于目前正在与我们的 OID2 API 集成的开发人员(可能是因为他们错过了我们的 OID2 文档中的公告和警告),我们将尽最大努力减少注册关闭造成的摩擦。如果您遇到这种情况,请在 6 月 15 日之前通过发布注册请求告知我们。该帖子应包含您的应用程序使用的示例 OID2 请求,如果您不想透露此类信息,请发布电子邮件地址,我们将与您联系。我们计划调查每个案例,并尝试以最好的方式让您畅通无阻。


†</sup> OID2 没有为 RP 与身份提供者集成的注册程序。RP 与联系 Google OID2 API 时使用的领域值(例如 www.example.com)相关联。因此,如果一个 RP 的领域值已用于联系我们的 OID2 API,则该 RP 被视为“已注册”。

于 2014-05-21T23:02:01.027 回答
2

我遇到了同样的问题,但是在使用 nodejs / expressjs 时

我已使用以下 url 代码迁移我的代码并修复了该问题

使用OAuth 1.0a 和 OAuth 2.0 通过 Google 进行身份验证的护照策略。https://github.com/jaredhanson/passport-google-oauth

于 2014-05-23T08:35:13.447 回答
2

您可以轻松更改为 OAuth 2,本文将向您展示如何向 Google 注册您的应用并将密钥添加到 MVC。向下滚动到:“为 OAuth 2 创建 Google 应用并将应用连接到项目。

您可能需要通过 NuGet 添加 Microsoft.Owin.Security.Google 包。

于 2014-05-28T09:11:16.500 回答
1

失败的子域是那些以前从未见过任何用户请求的子域。根据https://developers.google.com/+/api/auth-migration#timetable,Google 不允许在 OpenID2 API 中使用新域。

于 2014-05-21T17:06:46.977 回答
0

我有这个确切的问题,我们使用谷歌登录来运行一个平台,这是一个全新的问题。

如果这有帮助,我发现了一些事情

  1. 尝试使用 openID 的完整域永远不会失败 www.example.org 和 www.example2.com 没有这个问题
  2. 平台上的子域有时会出现这个问题,但相同的子域总是失败,而其他子域总是工作。

它从星期一开始,现在仍在发生。

于 2014-05-21T14:28:42.007 回答
0

深呼吸,只需更改Startup.Auth.cs文件

            app.UseGoogleAuthentication();

    app.UseGoogleAuthentication(
     clientId: "000-000.apps.googleusercontent.com",
     clientSecret: "00000000000");

参考http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on页。

于 2014-06-20T09:35:59.170 回答