我在我的主域example.com上设置了一个项目,然后将其移动到子域sub.example.com
现在,当我尝试在OpenId上使用相同的(默认的ASP.NET MVC或我的Discourse论坛)项目并点击Google按钮使用我的Google帐户登录时,会抛出以下错误 -
这是一个错误。
OpenID auth request contains an unregistered domain: http://sub.example.com
我尝试使用谷歌搜索该消息,但显然我是前四个人之一。这里有什么想法吗?
答案 0 :(得分:29)
根据this page, Google于2014年5月关闭了新的OpenID 2.0客户注册,并将于2015年4月关闭OpenID 2.0服务。
部分主机之所以有效,有些则不然,虽然Google没有添加新主机,但您仍然可以使用已注册的主机。
更新: 有些人要求提供一个简单的解释,说明如何解决这个问题,或者如何继续解决。
基本上,您现在有2个选项。
使用OAuth 2.0 (而不是openID协议和旧版OAuth)
或
使用Google+登录(Google试图“推动”您)
有关详细信息,请查看迁移指南:
答案 1 :(得分:5)
我想为此线程添加一些上下文以及当前被阻止的开发人员的潜在解决方案。
早在二月份我们announced the deprecation(OID2)的OpenID 2.0计划于2015年4月举行。我们还宣布新的OID2依赖方(RP)注册†将不再是2014年4月之后接受。
鉴于API将在不到一年的时间内关闭,我们的目的是避免将新 RP与Google的OID2 API集成。相反,我们建议使用我们认为更安全,更易于实施的OpenID Connect API。
注册于5月19日实际关闭(如Google’s OID2 developer documentation中所述)。已经使用OID2的所有RP都不应受此闭包的影响。
对于目前正在与我们的OID2 API集成的开发人员(可能是因为他们错过了我们的OID2文档中的公告和警告),我们将尽最大努力减少注册结束引起的摩擦。如果您遇到这种情况,请在6月15日之前发布registration request告知我们。该帖子应包含您的应用程序使用的样本OID2请求,如果您不想透露此类信息,请发送电子邮件地址,我们将与您联系。我们计划调查每个案例,并尝试以最佳方式解除阻止。
† OID2没有与身份提供商集成的RP的注册程序。 RP与联系Google OID2 API时使用的领域值(例如,www.example.com)相关联。因此,如果RP的领域值已用于联系我们的OID2 API,则RP被视为“已注册”。
答案 2 :(得分:2)
我遇到了相同的问题,但在使用nodejs / expressjs
时我已使用以下网址代码迁移我的代码并修复了该问题
使用 OAuth 1.0a和OAuth 2.0进行身份验证的Passport策略。 https://github.com/jaredhanson/passport-google-oauth
答案 3 :(得分:2)
您可以轻松更改为OAuth 2,this article向您展示如何向Google注册您的应用并将密钥添加到MVC。向下滚动到:“为OAuth 2创建Google应用并将应用连接到项目。”
您可能需要通过NuGet添加Microsoft.Owin.Security.Google包。
答案 4 :(得分:1)
失败的子域是之前从未见过任何用户请求的子域。根据{{3}},Google不允许在OpenID2 API中使用新域。
答案 5 :(得分:0)
我有这个确切的问题,我们使用googles登录来运行一个平台,这是一个全新的问题。
如果这有帮助,我发现了一些事情
它开始于周一左右,现在仍在发生。
答案 6 :(得分:0)
深呼吸,只需更改 Startup.Auth.cs 文件
即可 app.UseGoogleAuthentication();
到
app.UseGoogleAuthentication(
clientId: "000-000.apps.googleusercontent.com",
clientSecret: "00000000000");