2016-12-08 11 views
0

Я разрабатываю веб-сайт с использованием идентификатора ASP.NET, который будет работать с субдоменами, которые идентифицируют клиента, используя некоторую информацию от here У меня есть субдомены, работающие локально, но я не могу их получить работать с OAuth.Выполнение работы с Google Oauth локально с субдоменами

Например, если я добрался до https://localhost:44301 и попробую войти в систему с Google, все в порядке. В моей консоли Google у меня есть https://localhost:44301 в разделе «Авторизованные исходники JavaScript» и https://localhost:44301/signin-google в разделе «Авторизованные URI-адреса перенаправления». Но когда я иду в https://foo.localhost:44301 Google ответит:.

Error: invalid_request

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

При попытке войти в систему можно добавить https://foo.localhost:44301 к «Авторизованный происхождение JavaScript» в консоли Google, но это не позволит мне добавить https://foo.localhost:44301/signin-google под уполномоченная переадресация идентификаторы URI, потому что он будет жаловаться:

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

некоторых другие questions and answers предложить перенаправлять все поддомены в один домен для OAuth, но в идеале я хочу сохранить регистрации на подобласть. Поэтому, если вы используете Google для подписки на foo.mydomain.com, он будет отделен от bar.mydomain.com, и я не думаю, что это сработает, если мне придется перенаправить оба на один и тот же домен (хотя я не уверен, что он будет работать без отдельного проектов в Google.

ответ

1

Google и вообще другие провайдеры OAuth2/OIDC будут поддерживать перенаправление на поддомены. Ваша конкретная проблема заключается в том, что вы пытаетесь использовать поддомены localhost, которые находятся в списке Special- Используйте Доменные имена (RFC6761), и, похоже, у Google есть дополнительные ограничения для этих.

Однако это не является реальным ограничением, так как при производстве вы будете использовать общедоступный домен верхнего уровня, откуда вы будете иметь зр целевые поддомены.

Если вам нужно иметь эту работу для местного развития, вы можете использовать localtest.me, который позволяет установить суб-домен вам нравится (foo.localtest.me и bar.localtest.me) в то же время гарантируя, что домен решает локальную машину (127.0.0.1). Это должно помешать Google жаловаться на это ...