让 Google Oauth 在本地与子域配合使用

Mat*_*and 3 asp.net oauth google-oauth asp.net-identity

我正在开发一个使用 ASP.NET 身份的网站,该网站将与子域一起使用,这些子域使用此处的一些信息来识别客户端。我有在本地工作的子域,但我无法让它与 OAuth 一起使用。

例如,如果我尝试https://localhost:44301使用 Google 登录,一切都很好。在我的 Google 控制台中,我有https://localhost:44301“授权的 JavaScript 来源”和https://localhost:44301/signin-google“授权的重定向 URI”下。但当我去https://foo.localhost:44301谷歌时会回复:

错误:无效_请求

redirect_uri 的参数值无效:不允许非公共域:https://foo.localhost:44301/signin-google

当你尝试登录时。我可以https://foo.localhost:44301在 Google 控制台中添加到“授权的 JavaScript 来源”,但它不会让我https://foo.localhost:44301/signin-google在授权的重定向 URI 下添加,因为它会抱怨:

无效重定向:https://foo.localhost:44301/signin-google必须以公共顶级域(例如 .com 或 .org)结尾

其他一些问题和答案建议将所有子域重定向到 OAuth 的单个域,但理想情况下我希望保留每个子域的登录信息。因此,如果您使用谷歌对其进行签名,foo.mydomain.com它将与它分开bar.mydomain.com,并且如果我必须将两者重定向到同一个域,我认为这不会起作用(尽管我不确定如果没有单独的项目,这是否会起作用)谷歌。

Joã*_*elo 5

Google 和一般其他 OAuth2/OIDC 提供商将支持重定向到子域。您的具体问题是,您似乎正在尝试使用特殊用途域名( RFC6761localhost )列表中的子域,并且 Google 似乎对这些子域有额外的限制。

但是,这并不是真正的限制,因为在生产中您将使用公共顶级域,从中您将拥有特定的子域。

如果您需要将此功能用于本地开发,您可以使用localtest.me,它允许您设置您喜欢的子域 (foo.localtest.mebar.localtest.me),同时仍然确保该域解析到您的本地计算机 ( 127.0.0.1)。这应该可以阻止谷歌抱怨它......