Облачная консоль Google: неверный URL-адрес перенаправления

Теперь я работаю над настройкой авторизации Google для доступа к ресурсам моей организации.

Но есть проблема с этой задачей. Моя организация использует нестандартный домен для своей локальной сети: domain.off. И когда я пытаюсь установить http://dev.domain.off:12345/auth/google/callback.html как обратный вызов oauth2 в Облачной консоли Google (https://cloud.google.com/console) Я получаю ошибку "Неверный переадресация URI".

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

Я не могу использовать производственную среду с прямым адресом для целей разработки. В среде разработки есть только частные адреса, domain.off.

Я не могу изменить среду разработки отверстий, чтобы изменить все частные адреса dev для публики. Это задача не моей поддержки.

Есть ли какое-либо решение моей проблемы? Единственное решение, которое я вижу сейчас, - попросить разработчиков Google удалить или изменить URI-валидатор в форме настройки обратного вызова oauth для приема нестандартных доменов.

Ответ 1

Что вы, вероятно, хотите, это использовать один из альтернативных рабочих процессов Oauth.

Если вы хотите использовать облако Google из своей службы, перейдите к учетной записи службы, как описано здесь: https://developers.google.com/console/help/new/#generatingoauth2 У меня есть это работает на teowaki.com для взаимодействия с bigquery google, и он работает без проблем. Все, что вам нужно, это создать ключ на облачной консоли и поместить ключ на свой сервер.

Если вам нужно идентифицировать пользователей, вы можете перейти на OAuth для установленных приложений, как показано здесь https://developers.google.com/console/help/new/#generatingoauth2

В этом случае вы можете выбирать между пользователями, идущими на URL-адрес, в котором им будет предоставлен токен, который им нужно вставить обратно в ваше приложение, или перенаправить на URL-адрес в localhost. Поскольку я предполагаю, что вы делаете webapp, вы должны выбрать первый вариант и представить пользователям токен, который им нужно вставить. Вероятно, это не лучший UX, но, будучи внутренним приложением, возможно, он выполним.

Ответ 2

так как вы не можете использовать прямой адрес с правильным доменом в Интернете

вы можете попробовать что-то вроде этого

Вы можете создать главный субдомен для получения всех ответов авторизации google и перенаправления на исправление субдомена с использованием параметра запроса состояния.

Например, создайте google.mydomain.com и используйте его как ваш действительный "Redirect URI", и Apache перенаправит этот URL-адрес каждому пользователю с функцией перенаправления (или перезаписи).

Дополнительная информация о перенаправлении apache в http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

Здесь код:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^google\.
RewriteCond %{QUERY_STRING} state=([a-z0-9]+)
RewriteRule ^(.*)$ http://%1.mydomain.com/$1 [L]

Ответ 3

Возможно ли, что вы выполняете согласие и перенаправляетесь в общедоступный домен, где вы управляете (используя access_type = offline)?

Когда Google отбрасывает код авторизации, не используйте его из общедоступного домена, передайте его с помощью http webhook или что-то в свой приватный домен, который имеет ограничение, а затем сделайте обмен из частного домена. Затем вы можете использовать URL-адрес домена и обратного вызова по-разному для всего, что хотите. Обратите внимание, что redirect_url, установленный с помощью sdk script, должен быть таким же, как и тот, который вы установили на консоли, независимо от того, на каком сервере вы фактически назовете обмен и завершить получение токена.

Я не уверен, что мне не хватает каких-либо ограничений, но, возможно, это помогает.