簡體   English   中英

如何從 App Engine 前端查詢 Google Cloud Platform 的元數據服務器以獲取計算引擎后端的身份令牌 (JWT)?

[英]How to query Google Cloud Platform's metadata server from App Engine frontend to get an identity token (JWT) for Compute engine backend?

目前,我們的項目在前端有一個 Angular 9 GCP App Engine 實例,在后端有一個 Django GCP Cloud Run 服務。 我們希望 Angular 應用程序查詢 GCP 以獲取來自元數據服務器的 JWT 令牌,我們將為每個后端請求放入 header 令牌。 根據此頁面查詢后,我們不斷收到以下“混合內容”錯誤。

Mixed Content: The page at {our App Engine url} was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience={audienceName}'. This request has been blocked; the content must be served over HTTPS.

我們嘗試使用上述 GCP 元數據 url 的 https 版本,該版本不存在。 理論上,我們應該能夠檢索此元數據,因為 GCP 實例(GCP App Engine 應用程序)正在與 GCP Compute Engine 后端通信。 有沒有人有從 UI 進行此查詢以獲取令牌以在對后端的請求中設置的經驗?

即使您的 Angular9 應用程序托管在 App Engine 上,代碼(TS 代碼,用 Javascript 翻譯)也不會在 App Engine 上運行,而是在客戶端瀏覽器上運行。

好的,您肯定知道這一點,但這將幫助我解釋您更簡單的問題。 您嘗試調用內部 Google URL ( http://metadata.google.internal/... )。 因此,您的用戶瀏覽器上的 Angular 應用程序無法訪問此 API。

好的模式不是這個。 您必須在接受來自 Angular9 應用程序的請求的后端(appEngine 或其他地方,Cloud Functions 或 Cloud Run)上公開 API(根據您的服務要求,可以對請求進行身份驗證(例如使用 firebase 身份驗證)或不) .

然后,托管在 Google Cloud 上的后端可以請求元數據服務器,然后生成令牌以訪問其他服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM