Аутентификация прокси-сервера Google с использованием API на SPA - PullRequest
0 голосов
/ 22 мая 2018

Мне любопытно, какова "лучшая практика" для аутентификации на основе restful-api, защищенного Google IAP.

Позвольте мне разбить его шаг за шагом, чтобы объяснить, что я пытаюсьдостигнуть:

  • Перейти к URL моей среды разработки: dev.blah.com.Здесь IAP предлагает войти в систему.Я вхожу в систему. Теперь у меня есть доступ к моему SPA.
  • Я просматриваю свой SPA.Но!Я не могу общаться с моим API, потому что он ТАКЖЕ защищен IAP.

Я читал, что могу выполнять программную аутентификацию в документации , но яне уверен, подходит ли мой конкретный вариант использования для программной аутентификации или даже будет БЕЗОПАСНЫМ.

Итак, я прав в том, что мне придется реализовать рабочий процесс программной аутентификации на стороне клиента, чтобы получить доступмой API?

Или есть альтернативный способ сказать: «После того как я авторизован для доступа к Этому ресурсу, защищенному IAP, я могу также войти в эти другие ресурсы».Я не могу просто скопировать токен, потому что это http-only, а файл cookie ограничен моим текущим доменом.

Некоторая дополнительная информация:

  • Мои службы работают в Google Kubernetes Engineкластера и автоматически создали балансировщики нагрузки на основе входящих объектов, которые я объявляю.
  • Каждая среда, защищенная IAP, получает свои собственные учетные данные OAuth, и я настраиваю балансировщики нагрузки для использования IAP с помощью: gcloud compute backend-services update [backend-service] --global --iap=enabled,oauth2-client-id=[the_id],oauth2-client-secret=[the_secret]

1 Ответ

0 голосов
/ 23 мая 2018

позвольте мне убедиться, что я понимаю, что вы пытаетесь сделать.Похоже, вы хотите вызывать свой API из JavaScript внутри веб-браузера, это правильно?

Если это так, и:

  • Все серверные службы настроены на использование одного и того же OAuthID клиента.
  • API и SPA обслуживают один домен.

тогда я думаю, что все будет работать, потому что сгенерированные JavaScript HTTP-запросы будут отправляться сCookie сеанса IAP.... Который не должен быть вашей установкой, иначе все будет работать, а это явно не так.:>

Если вы не можете организовать вызовы API для использования файла cookie сеанса IAP, сгенерированного при аутентификации в SPA, это будет непросто.Вы не захотите использовать аутентификацию учетной записи службы из браузера, поскольку это даст всем конечным пользователям доступ к учетной записи службы.

Хм, похоже, что - это способсделать Google OAuth из JavaScript: https://developers.google.com/api-client-library/javascript/features/authentication - я не пробовал, но если вы можете заставить это работать, вы должны , чтобы иметь возможность использовать поток наподобие https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_desktop_app.Если вы хотите пойти по этому пути, дайте мне знать, как он идет, и я бы хотел помочь вам разобраться с этим, а затем добавить этот подход в нашу документацию!

- Мэтью, Google Cloud IAP engineering

...