2016-12-08 3 views
0

Ich entwickle eine Website mit ASP.NET-Identität, die mit Subdomains funktioniert, die einen Client mit einigen Informationen aus here identifizieren Ich habe Sub-Domains lokal arbeiten, aber ich kann es nicht bekommen mit OAuth arbeiten.Google Oauth lokal mit Subdomains arbeiten

Zum Beispiel, wenn ich https://localhost:44301 und versuchen, mit Google anmelden, ist alles in Ordnung. In meiner Google-Konsole habe ich https://localhost:44301 unter "Autorisierte JavaScript-Ursprünge" und https://localhost:44301/signin-google unter "Authorized Redirect URIs". Aber wenn ich zu https://foo.localhost:44301 gehen Google reagieren mit:.

Error: invalid_request

Invalid parameter value for redirect_uri: Non-public domains not allowed: https://foo.localhost:44301/signin-google

Wenn Sie versuchen, sich anzumelden ich hinzufügen kann https://foo.localhost:44301 auf „Berechtigte JavaScript Ursprung“ in der Google-Konsole, aber es wird mich nicht https://foo.localhost:44301/signin-google lassen hinzufügen unter Umleitung URIs zugelassen, weil sie beschweren:

Invalid Redirect: https://foo.localhost:44301/signin-google must end with a public top-level domain (such as .com or .org)

Einige andere questions and answers vorschlagen alle Sub-Domains zu einer einzelnen Domäne für OAuth Umleitung, sondern im Idealfall möchte ich Anmeldungen pro Sub-Domain halten. Also, wenn Sie google verwenden, um es zu unterzeichnen foo.mydomain.com wird es getrennt von bar.mydomain.com sein und ich denke nicht, dass das funktionieren wird, wenn ich beide auf die gleiche einzelne Domain umleiten muss (obwohl ich nicht sicher bin, dass das ohne trennen wird) Projekte in Google.

Antwort

1

Google und im Allgemeinen andere OAuth2/OIDC-Anbieter unterstützen die Weiterleitung an Subdomains. Ihr spezifisches Problem ist, dass Sie versuchen, Subdomains von localhost zu verwenden, die in der Liste der Special-Domains enthalten sind. Verwenden Sie Domain-Namen (RFC6761) und es scheint, Google hat zusätzliche Einschränkungen für diese.

Allerdings ist dies keine echte Einschränkung, weil auf Produktion Sie eine öffentliche Top-Level-Domain von wo Sie die haben sp Sub-Domains.

Wenn Sie diese Arbeit für die lokale Entwicklung haben, dann können Sie localtest.me verwenden, die Ihnen eine Sub-Domain festlegen können Sie (foo.localtest.me und bar.localtest.me), während nach wie vor gewährleistet, dass die Domain auf den lokalen Rechner löst (127.0.0.1). Dies sollte Google davon abhalten, sich darüber zu beschweren ...