簡體   English   中英

AWS Cognito JS如何允許訪問s3對象(特定的html頁面)

[英]AWS Cognito JS how to allow access to s3 object (a specific html page)

我在s3托管網站中有3個html文件,一個register.html,login.html和dashboard.html

注冊和登錄工作最終得到一個訪問令牌。

如何限制對dashboard.html的訪問,然后以某種方式使用訪問令牌來允許對其進行訪問?

使用JavaScript而不限制訪問

對於此類問題,直接的方法是加載dashboard.html,並在dashboard.html主體中具有JavaScript,以通過驗證用戶是否已經登錄(例如,檢查Cognito)來切換內容的顯示。本地存儲中的JWT令牌),並重定向到未經身份驗證的用戶登錄到login.html。

注意:如果您計划使用AWS Cognito UserPools托管UI,此方法也將很有用。

限制訪問

如果您打算繼續限制對dashboard.html的訪問,則可以使用CloudFront Signed Cookies來實現它,如下所示。

  • 通過AWS CloudFront設置S3訪問(創建原始訪問身份-OAI),並將S3存儲桶設為私有(對於所有三個頁面)。 在注冊S3來源時,將使用向導進行OAI。
  • 為每個html文件創建三種不同的行為。
  • 對於login.html和register.html行為,將“ 限制查看器訪問權限(使用簽名的URL或簽名的Cookie)”設置為“否”。
  • 僅限於dashboard.html,將“ 限制查看者訪問權限(使用簽名的URL或簽名的Cookie)”設置為“是”
  • 當用戶嘗試直接訪問dashboard.html(無登錄)時,CloudFront將返回錯誤。 因此,將AWS CloudFront錯誤響應配置為Login.html。
  • 創建一個API網關和Lambda端點以從登錄頁面驗證Cognito JWT令牌,並在Lambda中創建一個簽名Cookie,並在setCookie標頭中將其返回。
  • 當存在Cookie時,瀏覽器將發送Cookie標頭,CloudFront將允許加載dashboard.html。

暫無
暫無

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

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