Я использую облачные платформы 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 '
Также яя могу получить доступ к контроллеру при использовании почтальона, там я делаю запрос на получение и передаю токен на вкладке авторизации