Google Cloud Run аутентификация - PullRequest
3 голосов
/ 10 мая 2019

Я использую Google Cloud Run для простого веб-приложения POC. Я надеялся, что пока GCP IAM будет обрабатывать аутентификацию, подобно тому, как Identity-Aware Proxy можно использовать в сочетании с App Engine или GKE.

Когда я дал пользователю роль «Запуск в облаке», я ожидал, что аутентификация будет работать аналогично IAP (поток аутентификации при перенаправлении входа в систему), но вместо этого я получаю ошибку 403. Я могу свернуть его, установив заголовок Authorization.

Требуется ли реализовать аутентификацию в приложении для пользовательских веб-приложений? Я надеялся сделать быстрый прототип, опираясь на IAM. Если это необходимо, каков будет рекомендуемый способ реализации аутентификации OAuth2 для простого прототипа? Аутентификация Firebase ?

1 Ответ

6 голосов
/ 10 мая 2019

Запустите PM здесь,

Да, сейчас вам необходимо разместить свой собственный клиент OAuth, например ::1003*

<html>
  <head>
    <title>Google Sign-in + Run</title>
    <script src="https://apis.google.com/js/platform.js"></script>
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
    <meta name="google-signin-client_id" content="{OAUTH_CLIENT_ID}">
  </head>

  <body>
      <div class="g-signin2" data-onsuccess="onSignIn"></div></br>
    <div>
      <div id="returned-text"></div></br>
      <button id="test">Test</button>
    </div>
    <script>
    var id_token;

    function onSignIn(googleUser) {
      id_token = googleUser.getAuthResponse().id_token;
    }

    $(document).ready(function() {
      $('#test').on('click', function () {
        var serviceURL = 'https://...';

        var xhr = new XMLHttpRequest();
        xhr.open('GET', functionURL);
        xhr.setRequestHeader('Authorization', 'bearer ' + id_token);
        xhr.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
               $('#returned-text').text(xhr.responseText);
            }
        };
        xhr.send();
      });
    });
    </script>
  </body>
</html>

Обратите внимание, что CORS здесь будет непростым делом, и мы рекомендуем хостинг на том же источнике, чтобы избавиться от этого (например, используйте Интеграция с Firebase Hosting ).

В будущем, скорее всего, мы предложим IAP (для вас размещен клиент OAuth).

...