簡體   English   中英

重定向到 AWS Cognito 用戶池的內置登錄頁面

[英]Redirect to built-in sign-in page for AWS Cognito user pool

我在具有 1 個 REST 端點的 AWS API Gateway 中創建了一個 API。 REST 端點調用用 C# 編寫的 Lambda 函數。 我還創建了一個 AWS Cognito 用戶池。 我想要做的是將 AWS Cognito 與 AWS Gateway API 集成,以便當未經身份驗證的用戶嘗試調用 REST API 時,API 會將他們重定向到 AWS Cognito 的內置登錄頁面。 目前,我已經將這兩個集成在一起,但是當我嘗試調用 REST API 時,它只是顯示一條未經授權的消息。 我希望它在那時重定向到登錄頁面,而不是顯示該消息。 我已經閱讀了很多 AWS 文檔,但不知道我錯過了什么。 我該怎么做呢?

在來自 Cognito 的未授權響應的情況下,我能夠通過指定一個自定義網關響應來解決它,該網關響應將 302 重定向發送到登錄頁面。 在 Terraform 中,它看起來像這樣:

resource "aws_api_gateway_gateway_response" "unauthorized" {
  rest_api_id   = "${aws_api_gateway_rest_api.apiGateway.id}"
  status_code   = "302"        
  response_type = "UNAUTHORIZED"  

  response_templates = {
    "application/json" = "{'message':$context.error.messageString}"
  }

  response_parameters = {
    "gatewayresponse.header.Location" = "'https://example.com/login'"
  }
}

我想出了一個解決方案。 我放棄了我原來的方法,最終這樣做了:

  1. 創建了一個 AWS Cognito 用戶池,並在 App 客戶端設置中將授權類型設置為隱式(因為我后面提到的 HTML/JS 網站是單頁應用程序)。
  2. 在用戶池中創建了一個組和用戶進行測試。
  3. 在 API Gateway 中創建了一個使用 AWS Cognito 授權方的 REST API。
  4. 使用 AWS S3 設置靜態網站。 靜態網站包含一個簡單的 HTML/JS 客戶端,該客戶端使用 AWS Cognito 身份庫對用戶進行身份驗證。 用戶通過身份驗證后,我會從庫中收到 JWT 令牌。 然后,使用 AJAX,我將此令牌傳遞給上面的 REST API。

這實現了我一直在尋找的東西。

暫無
暫無

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

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