簡體   English   中英

從具有訪問限制的 GCS 服務 static 頁面

[英]Serving static page from GCS with access restrictions

我在谷歌雲存儲上提供一個 static 頁面。 只要它是公開的,它就可以很好地工作。 現在我設置了 acl,這樣只有一組用戶才能讀取存儲,而未經身份驗證的用戶將被重定向到谷歌身份驗證。 現在的問題是,網站的 static 內容,如 javascript 和 css 再也找不到了,我在那里收到 404 錯誤。 static 內容也在存儲桶中,並且可以與公共 URL 一起正常工作。 使用經過身份驗證的網址時,它不再起作用。

我提供訪問控制頁面的嘗試是否正確? 我猜是這樣,因為它有效,除了 static 內容。 那么你知道我在這里缺少什么嗎?

嘗試在您提交的 App Engine 上部署。 為了這

  1. 在 static 文件的同一根目錄中,使用此內容創建一個app.yaml文件
runtime: nodejs10
env: standard
instance_class: F1
handlers:
  - url: /
    static_files: index.html
    require_matching_file: false
    upload: index.html
  - url: /(.*)
    static_files: /\1
    require_matching_file: false
    upload: /.*
  - url: .*
    script: auto
  1. 在 App Engine 上gcloud app deploy
  2. 檢查它是否適用於提供的 URL。

如果是這樣:

  1. Go 到安全 -> 身份感知代理 (IAP)
  2. 為 App Engine 激活 IAP; 可能必須在此步驟配置 OAuth 同意屏幕,如果您之前沒有這樣做
  3. Select 根服務左側的復選框,go 頁面右側的信息面板在此處輸入圖像描述
  4. 添加角色為IAP-secured Web app user的成員、組或域

測試並享受!

您可以使用以下解決方法將用戶身份驗證添加到基於存儲桶的 GCS static 頁面。

首先你需要創建一個名為redirect.html的public文件,這個文件將作為你static網頁的入口,你需要添加以下內容

<html>
  <head>
    <meta http-equiv="Refresh" content="0; url=https://storage.cloud.google.com/[yourbucketname]/index.html">
  </head>
  Redirecting to your site..

index.html和其他文件必須是私有文件,並授予選定用戶讀取權限

這背后的神奇之處在於,如果您的瀏覽器沒有任何活動的谷歌帳戶,您的瀏覽器會提示選擇一個谷歌帳戶。

並且只有具有讀者權限(或具有讀取權限的其他角色)的用戶才能訪問您的 static 網站。

友情提醒,如果您的瀏覽器有超過 1 個 Google 帳戶,這將使用瀏覽器中的主要 Google 帳戶,這可能會導致身份驗證問題,如果發生這種情況,請使用隱身 window。

您可以在這篇Medium 文章中找到更多信息

額外的步驟

如果您啟用了數據訪問日志,此解決方法將引發一些身份驗證問題,您需要為將使用經過身份驗證的站點的用戶添加例外

為此,請在 Cloud Console 中導航至IAM & Admin > Audit Logs 查看列表或過濾器以查找Google Cloud Storage 單擊該行。

在右側信息面板的免除用戶選項卡上,單擊添加免除用戶。

暫無
暫無

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

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