如何設定 Application Load Balancer 以透過 Amazon Cognito 使用者集區對使用者進行驗證?

3 分的閱讀內容
0

我想要將 Application Load Balancer 與 Amazon Cognito 使用者集區進行整合,以對使用者進行驗證。

簡短描述

若要管理使用者和對其進行驗證,您可以將 Application Load BalancerAmazon Cognito 使用者集區進行整合。若要設定以 Application Load Balancer 和 Amazon Cognito 使用者集區對使用者進行驗證,請完成以下步驟:

1.    建立 Application Load Balancer,並取得其 DNS 名稱。

2.    建立和設定 Amazon Cognito 使用者集區。

3.    設定 Application Load Balancer。

4.    測試設定。

解決方案

若要設定 Application Load Balancer 和 Amazon Cognito 使用者集區以對應用程式使用者進行驗證,請完成以下步驟。

建立 Application Load Balancer

**注意:**如果您已設定 Application Load Balancer,請繼續進行下一節。

1.    建立面向網際網路的 Application Load Balancer

2.    為 Application Load Balancer 建立 HTTPS 接聽程式

**注意:**只有 HTTPS 接聽程式能夠支援 authenticate-cognitoauthenticate-oidc 規則動作類型

取得 Application Load Balancer 的 DNS 名稱

1.    開啟 Amazon Elastic Compute Cloud (Amazon EC2) 主控台

2.    在導覽窗格中,選擇 Load Balancers (負載平衡器) 下的 Load Balancing (負載平衡)。

3.    選取您的 Application Load Balancer。

4.    在 Description (描述) 索引標籤上,複製並儲存負載平衡器的 DNS name (DNS 名稱)。使用此 DNS 名稱可存取 Application Load Balancer 的端點 URL 以進行測試。

建立和設定 Amazon Cognito 使用者集區

1.    使用應用程式用戶端建立 Amazon Cognito 使用者集區。設定應用程式用戶端時,請選取 Generate a client secret (產生用戶端密碼) 選項按鈕。

如需詳細資訊,請參閱準備使用 Amazon Cognito

**注意:**在建立使用者集區時,請設定您要用於生產環境的設定。在建立使用者集區之後,就無法變更某些使用者集區設定。例如,您無法變更使用者註冊所需的標準屬性

2.    開啟 Amazon Cognito 主控台

3.    在導覽窗格中,選擇 User pools (使用者集區),然後選取您的使用者集區。複製並儲存 User pool ID (使用者集區 ID)。使用此 ID 可設定 Application Load Balancer 以進行使用者驗證。

4.    為您的使用者集區選擇 App integration (應用程式整合) 索引標籤,然後為您的使用者集區新增網域

5.    從您使用者集區的 App integration (應用程式整合) 索引標籤中,導覽至 App clients and analytics (應用程式用戶端和分析) 區段。然後,選取您的應用程序用戶端。

6.    在應用程式用戶端頁面上的 App client information (應用程式用戶端資訊) 下,複製並儲存 Client ID (用戶端 ID)。使用此 ID 可設定 Application Load Balancer 以進行使用者驗證。

7.    在 Hosted UI (託管 UI) 區段中,選擇 Edit (編輯)。

8.    選擇 Add callback URL (新增回呼 URL),然後輸入 https://loadBalancerDNSName/oauth2/idpresponse

-或-

如果您使用了 CNAME 記錄將自訂網域對應至 Application Load Balancer,則請輸入 https://CNAME/oauth2/idpresponse

**注意:**請使用您從 Amazon EC2 主控台複製得到的 DNS 名稱取代 loadBalancerDNSName。如果您要使用 CNAME 記錄,則請使用您的自訂網域取代 CNAME

9.    選擇 Add sign-out URL (新增登出 URL),然後輸入要在使用者登出後,作為其重新導向目的地的 URL。若要進行測試,您可以輸入任何有效的 URL,例如 https://example.com/

10.    對於 Identity providers (身分提供者),請選取 Cognito user pool (Cognito 使用者集區) 核取方塊。

11.    在 OAuth 2.0 grant types (OAuth 2.0 授予類型) 下,選取 Authorization code grant (授權碼授予) 核取方塊。根據您的要求選擇任何其他 OAuth 授予類型。

12.    在 OpenID Connect scopes (OpenID Connect 範圍) 下,選取 OpenID 核取方塊。OpenID 範圍會傳回 ID 字符。根據您的要求選擇任何其他 OpenID Connect (OIDC) 範圍。

13.    選擇 Save changes (儲存變更)。

如需詳細資訊,請參閱設定使用者集區應用程式用戶端透過第三方新增使用者集區登入

設定您的 Application Load Balancer

1.    開啟 Amazon EC2 主控台

2.    在導覽窗格中,選擇 Load Balancers (負載平衡器) 下的 Load Balancing (負載平衡)。

3.    選取您的 Application Load Balancer。

4.    在 Listeners (接聽程式) 索引標籤上,選取您要更新的 HTTPS 接聽程式預設規則,然後選擇 Actions (動作) >Manage rules (管理規則)。

5.    使用下列設定來編輯 HTTPS 接聽程式預設規則

  • 對於 THEN,選擇 Add action (新增動作)。
  • 選擇 Authenticate (驗證)。
  • 對於 Authenticate (驗證),選擇 Amazon Cognito
  • 對於使用者集區,輸入您從 Amazon Cognito 主控台複製得到的 User pool ID (使用者集區 ID)。
  • 對於應用程式用戶端,輸入您從 Amazon Cognito 主控台複製得到的 Client ID (用戶端 ID)。
  • 展開 Advanced settings (進階設定)。
  • 對於 Scope (範圍),輸入您為使用者集區應用程式用戶端設定的範圍,並以空格分開。您可以在使用者集區的 OIDC 組態中找到範圍。例如,如果組態中的 scopes_supported 值是 ["openid","email","phone","profile"],則輸入 openid email phone profile
  • 選擇核取記號圖示。

6.    使用下列設定繼續編輯 HTTPS 接聽程式預設規則:

  • 對於 THEN,選擇 Add action (新增動作)。
    **注意:**如果您無法選擇 Add action (新增動作),則請使用垃圾筒圖示刪除現有的路由動作,例如 Redirect to (重新導向至)。然後,再試一次。
  • 選擇 Forward to (轉寄至)。
  • 對於 Forward to (轉寄至),選擇一或多個目標群組。
  • (選擇性) 設定 Group-level stickiness (群組層級黏性)。
  • 選擇核取記號圖示。

7.    選擇 Update (更新) 以更新 HTTPS 接聽程式預設規則。

測試設定

在您的網頁瀏覽器中,輸入下列其中一個 URL:

  • https://loadBalancerDNSName/
  • https://CNAME/

**注意:**請使用您從 Amazon EC2 主控台複製得到的 DNS 名稱取代 loadBalancerDNSName。或者,使用您的自訂網域取代 CNAME。系統會將您重新導向至您使用者集區的 Amazon Cognito 託管 Web UI。在使用者登入並經過使用者集區進行驗證之後,系統會將使用者重新導向至目標。


相關資訊

Application Load Balancer 入門

透過 Application Load Balancer 內建驗證來簡化登入

Application Load Balancer 的接聽程式規則

OIDC 使用者集區 IdP 驗證流程

AWS 官方
AWS 官方已更新 1 年前