我正在使用ASP.NET身份开发一个网站,该身份将与子域一起使用,这些子域使用此处的某些信息来识别客户端,但我在本地工作了,但我无法获得它可以与Oauth一起工作。
例如,如果我要使用https://localhost:44301
并尝试使用Google登录,那么一切都很好。在我的Google控制台中,我在"授权JavaScript Origins"下有https://localhost:44301
。和https://localhost:44301/signin-google
"授权重定向乌里斯"。但是当我去https://foo.localhost:44301
时,Google会回复:
错误:invalid_request
redirect_uri的无效参数值:不允许非公共域:https://foo.localhost:44301/signin-google
当您尝试登录时。我可以将https://foo.localhost:44301
添加到"授权JavaScript Origins"中。在Google Console中,但它不会让我在授权重定向UIR下添加https://foo.localhost:44301/signin-google
,因为它会抱怨:
无效的重定向:https://foo.localhost:44301/signin-google必须以公共顶级域(例如.com或.org)结束
其他一些问题和答案表明,将所有子域重定向到OAuth的一个域,但理想情况下,我想每个子域保持登录。因此,如果您使用Google将其签名到foo.mydomain.com
,它将与bar.mydomain.com
分开,如果我必须将两者重定向到同一单个域,我认为这将无效Google中的项目。
Google,通常其他OAuth2/OIDC提供商将支持重定向到子域。您的具体问题是,您似乎正在尝试使用特殊使用域名列表(RFC6761)的localhost
的子域,并且似乎Google对这些域名也有其他约束。
但是,这不是真正的限制
如果您需要为本地开发工作,则可以使用localtest.me,允许您设置自己喜欢的子域(foo.localtest.me
和bar.localtest.me
),同时仍确保域域分解为本地计算机(127.0.0.1
)。这应该阻止Google抱怨它...