改变域错误 - OpenId认证请求包含一个未注册的域名

27

我在主域名example.com上建立了一个项目,然后将其移动到子域名sub.example.com。

现在当我尝试使用相同的(默认ASP.NET MVC或我的Discourse论坛)带有OpenId的项目,并单击Google按钮以使用我的Google帐户登录时,会抛出以下错误消息 -

  1. That's an error.

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

我已经尝试谷歌这个信息,但显然我是前四个看到它的人之一。 这里有什么想法吗?

7个回答

29
根据此页面,Google于2014年5月关闭了新的OpenID 2.0客户端注册,并将在2015年4月关闭OpenID 2.0服务。
一些主机能够正常工作而另一些不能的原因是,尽管Google不再添加新的主机,但您仍然可以使用已经注册的主机。
更新: 一些人要求简单解释如何修复此问题,或者其他如何进行的方法。
基本上,您现在有两个选择。
使用OAuth 2.0(而不是openID协议和旧版本的OAuth)

使用Google+登录(Google试图“推动”您使用该选项)
有关更多详细信息,请查看迁移指南: https://developers.google.com/+/api/auth-migration#userinfo

10
哇,什么鬼?我刚看了那篇文章,但我想知道为什么谷歌会这样做…… - PW Kad
2
他们正在整合所有不同的访问点,以通过Google+进行流量控制。这对我们来说是一个巨大的失望,因为我们需要能够使用多个URL,而无需首先在Google上注册它们。 - Altryne
如果你使用 JavaScript 客户端,你可以注册来源网址而不是具体的重定向 URI。 - breno
那么我们现在必须使用OAuth2(https://developers.google.com/accounts/docs/OAuth2)吗?还是有其他解决方案?我不理解这个表格(工作8小时后太累了..) - whoah
@breno 对此的解释可能会成为一个很好的答案。 - PW Kad

5
我希望在本讨论串中添加一些背景信息,并为当前受阻的开发人员提供潜在解决方案。
早在2月份,我们宣布了计划在2015年4月停用OpenID 2.0(OID2)。我们还宣布,将不再接受新的OID2信赖方(RP)注册,此举将于2014年4月之后生效。
考虑到API将在不到一年的时间内关闭,我们的意图是避免有新的RP集成Google的OID2 API。相反,我们建议使用我们认为更安全、更易于实现的OpenID Connect API
注册已于5月19日有效关闭(如Google OID2开发者文档所述)。所有已经使用OID2的RP不应受此关闭的影响。

对于目前正在与我们的OID2 API进行集成的开发人员(可能是因为他们错过了我们的OID2文档中的公告和警告),我们将尽力减少注册关闭所造成的摩擦。如果您处于这种情况,请在6月15日之前发布注册请求,以便让我们知道。帖子应包含您的应用程序使用的样本OID2请求,如果您不愿透露此类信息,请发布电子邮件地址,我们会联系您。我们计划研究每个案例,并尝试以最佳方式解除阻止。


OID2没有为与身份提供者集成的RPs提供注册程序。当联系Google OID2 API时,RPs与领域值(例如www.example.com)相关联。因此,如果已使用其领域值联系我们的OID2 API,则认为RP已经“注册”。


12
这项变革如何有助于互联网?Google希望从互联网中获取更多信息,这是好事。但是OpenID的伟大之处在于任何人都可以使用它,这是一件美好的事情。 - MikeyB
这很重要,因为OID2不需要通过API注册每个站点。Oauth2和Google+在调用登录之前都需要该领域已经注册。 - mordy
嗨,Miguel,我已经尝试通过那个Google Group与您联系,但我的消息还没有被批准。 - Alan Gerber
嗨,Miguel,我目前被这个问题阻塞了,我向你提供的Google组发送了“注册请求”,但已经一个星期了仍未获批准 - 你能否批准它并与我联系? - Alan Gerber
嗨,Alan,我已经通过我们的Google Group联系到了你提供的地址。 - Miguel Andres
我觉得这根本没有回答问题。你需要给出一个针对用户而不是开发者的答案。最终用户决定使用特定的ID提供程序登录到特定的站点,而且正是这个最终用户收到了错误消息。在此用户想要登录之前,该站点和ID提供程序可能从未听说过彼此。那个用户需要做什么才能登录? - kasperd

2

我曾遇到过相同的问题,但是在使用nodejs / expressjs时。

我使用下面的代码迁移了我的代码,并解决了这个问题。

OAuth 1.0a和OAuth 2.0的谷歌验证的Passport策略。 https://github.com/jaredhanson/passport-google-oauth


2
您可以轻松切换到OAuth 2,此文章向您展示如何在Google上注册应用程序并将密钥添加到MVC中。请滚动到:“创建OAuth 2的Google应用并将其连接到项目。” 您可能需要通过NuGet添加Microsoft.Owin.Security.Google包。

@Gerrett,有没有关于在ASP.NET MVC 4应用程序中升级到OAuth 2的链接或示例代码?我们可以简单地创建一个类,类似于app_start中的asp.net mvc 5 start.auth.cs文件,并在application_start中调用它吗?我发布了一个问题http://stackoverflow.com/questions/26127590/asp-net-mvc-4-use-oauth2-for-google。 - sanjeev

1

0

下面显示的AppId和App Secret值仅为示例,无法使用。 - eis

0

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

如果有帮助的话,我发现了一些事情:

  1. 尝试使用OpenID的完整域名从未失败,例如www.example.org和www.example2.com没有出现此问题
  2. 平台上的子域名有时会出现此问题,但相同的子域名总是失败,而其他子域名总是正常工作。

它始于周一,现在仍在发生。


谢谢你的建议 - 很希望这个问题能够得到关注并获得一个好的答案 - 我要等到明天才能设置悬赏。 - PW Kad
这是不正确的,只是恰好所有完整的域名都被注册了,而子域名没有被注册,请忽略此答案。 - mordy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接