Google oauth子域名

时间:2014-06-21 14:02:58

标签: oauth oauth-2.0 google-oauth

我在网站上实施了Google oAuth(example.com)。一切正常,除了我网站上的子域名auth(我有几千个子域名)。当用户尝试通过子域进行授权时,例如

fr.example.com
product1.example.com
product2.de.example.com

我收到了Google的错误 -

The redirect URI in the request did not match a registered redirect URI

如何解决?

5 个答案:

答案 0 :(得分:6)

这是因为Google的OAuth不支持通配符子域匹配。您可以参考更多文档here

答案 1 :(得分:3)

其他答案已经澄清,问题的原因是Google的OpenAuth不支持外卡子域。但是,您要问的是如何解决?嗯,根据this email thread,你有两个选择:

  1. 为所有子域提供单个OAuth2处理端点。也就是说,您拥有一个主域和端点,您也可以通过该域和端点对子域进行身份验证。完成身份验证后,您将重定向回子域。据说是一个OpenAuth state 参数,您可以在其中编码子域名。这就是我所做的,这里是代码:https://github.com/debiki/debiki-server/blob/master/app/controllers/LoginWithOpenAuthController.scala

  2. 您可以让每个子域名都与Google独立注册。

  3. 您选择的选项取决于要求Google用户批准的品牌。主域名还是子域名?

答案 2 :(得分:1)

重定向URI必须与Google Developers Console中为此项目列出的值之一完全匹配(包括http或https方案,大小写和尾随'/')。因此,如果您不在开发人员控制台中添加它们,它将不支持子域。

答案 3 :(得分:0)

这是因为Google的OAuth不支持通配符子域匹配。您可以重定向所有子域的一个静态页面,在验证或获取OAuth的访问令牌后,您可以返回带访问令牌的子域页面。

答案 4 :(得分:0)

在授权的 JavaScript 来源字段中,输入您的应用的来源。您可以输入多个来源,以允许您的应用在不同的协议、域或子域上运行。不能使用通配符。在下面的示例中,第二个 URL 可以是生产 URL。

http://localhost:8080 或 https://myproductionurl.example.com

https://developers.google.com/identity/sign-in/web/server-side-flow