Хотите получить доступ к движку приложений с поддержкой Identity-Aware Proxy IAP с помощью токена Google API, используя angular - PullRequest
0 голосов
/ 18 октября 2019

Я использую облачные платформы Google, использую Identity-Aware Proxy IAP для защиты движка приложения. В моем движке приложений есть две службы: 1) UI (Angular) 2) Controller (в node.js), я защищаю обас использованием IAP и разрешением доступа к движку приложения только одному пользователю.

Я получаю токен gw API google из интерфейса пользователя после входа в систему с помощью приведенного ниже кода (фрагмент 1), а затем использую токен в заголовкемоего углового кода, как показано в коде (фрагмент 2), но затем я получаю ошибку CORS, как показано в фрагменте 3, также, когда я проверяю вкладку сети Google Chrome, я вижу ошибку 302 по запросу и некоторые перенаправления отменены.

Примечание. Когда я не отключаю IAP от GCP, я могу получить доступ к коду контроллера из моего внешнего кода, используя обычный запрос http.get. Я застрял в этой проблеме, любая помощь будет отличной, и я буду благодарен.

Фрагмент 1:

<html lang="en">
  <head>
    <meta name="google-signin-scope" content="profile email">
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
    <script src="https://apis.google.com/js/platform.js" async defer></script>
  </head>
  <body>
    <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div>
    <script>
      function onSignIn(googleUser) {
        // Useful data for your client-side scripts:
        var profile = googleUser.getBasicProfile();
        console.log("ID: " + profile.getId()); // Don't send this directly to your server!
        console.log('Full Name: ' + profile.getName());
        console.log('Given Name: ' + profile.getGivenName());
        console.log('Family Name: ' + profile.getFamilyName());
        console.log("Image URL: " + profile.getImageUrl());
        console.log("Email: " + profile.getEmail());

        // The ID token you need to pass to your backend:
        var id_token = googleUser.getAuthResponse().id_token;
        console.log("ID Token: " + id_token);
      }
    </script>
  </body>
</html>

Фрагмент 2:

async getService(url, t) { 
    let headers = new HttpHeaders() 
    headers.append('Authorization', Bearer ${t}) 
    return this.http.get(url, {headers:headers}).toPromise(); } 

Фрагмент 3:

Доступ к XMLHttpRequest по адресу my- controller.appspot.com/api/v2/getResp? question = Hi & sessionId = 2516966506 & channel = WebUser 'from origin' localhost: 4200 'заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '

Также яя могу получить доступ к контроллеру при использовании почтальона, там я делаю запрос на получение и передаю токен на вкладке авторизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...