跳至內容

如何將 Application Load Balancer 設定為透過另一個 AWS 帳戶的 Amazon Cognito 使用者集區來驗證使用者?

2 分的閱讀內容
0

我想透過 Amazon Cognito 使用者集區,將 Amazon Cognito 驗證與 Application Load Balancer 搭配使用。但是,我的使用者集區位於另一個 AWS 帳戶中。

解決方法

在下列解析中,帳戶 B 是擁有 Application Load Balancer 的帳戶,帳戶 A 是擁有使用者集區的帳戶。

建立 Application Load Balancer

如果您已經有 Application Load Balancer,則請繼續進行下一節。

如果您沒有 Application Load Balancer,請使用 HTTPS 接聽程式建立一個

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

取得帳戶 B 中的 Application Load Balancer 的 DNS 名稱

在帳戶 B 中完成以下步驟:

  1. 開啟 Amazon Elastic Compute Cloud (Amazon EC2) console (Amazon Elastic Compute Cloud (Amazon EC2) 主控台)。
  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)。
  3. 選取您的 Application Load Balancer。
  4. Description (說明) 索引標籤上,記下負載平衡器的 DNS 名稱,以便在後續步驟中使用。

在帳戶 A 中建立並設定使用者集區

如果您在另一個帳戶中已經有使用者集區,請繼續進行下一節。

如果您沒有使用者集區,請在帳戶 A 中完成以下步驟:

  1. 使用應用用戶端建立 Amazon Cognito 使用者集區
    **注意:**建立應用程式用戶端時,可以從以下四個選項中選擇其一:傳統 Web 應用程式、單頁應用程式、行動應用程式和 M2M 驗證。如果您選擇傳統的 Web 應用程式或 M2M 驗證,則會產生具有用戶端密碼的應用程式用戶端。
  2. 開啟 Amazon Cognito console (Amazon Cognito 主控台)。
  3. 在使用者集區的 User pool overview (使用者集區概觀) 中,記下使用者集區 ID,以便在後續步驟中使用。
  4. Branding (品牌) 索引標籤上,選擇 Domain (網域)。為您的使用者集區新增 Amazon Cognito 網域名稱。網域名稱是 Cognito Hosted UI 所需的唯一網域首碼
  5. Applications (應用程式) 下,選擇 App clients (應用程式用戶端)。
  6. 選取要更新的應用程式用戶端。
  7. App client page (應用程式用戶端頁面) 上,完成以下步驟:
    開啟 Show client secret (顯示用戶端密碼)。
    請記下應用程式用戶端 ID 和應用程式用戶端密碼,以便在後續步驟中使用。
  8. Hosted UI (託管 UI) 下,新增 https://load-balancer-dns-name/oauth2/idpresponsehttps://custom-domain-name/oauth2/idpresponse 回呼網址。
  9. 在 OAuth 2.0 授權類型,選取 Authorization code grant (授權代碼授權)。
  10. 在 OAuth 2.0 權限範圍,選取 openid
  11. 選擇 Save changes (儲存變更)。

取得使用者集區的 OIDC 組態詳細資訊

若要將您的使用者集區設定為Application Load Balancer 上的 OpenID Connect (OIDC) 身分提供者 (IdP) ,您必須取得 OIDC 設定端點詳細資訊。

若要取得組態詳細資訊,請完成以下步驟:

  1. 在您的瀏覽器中,輸入網址 https://cognito-idp.region.amazonaws.com/userPoolId/.well-known/openid-configuration
    **注意:**將 region 替換為您使用者集區的 AWS 區域,例如 us-east-1,並將 userPoolId 替換為您使用者集區的 ID。
  2. 在瀏覽器中顯示的 JSON 回應中,記下以下欄位的值:
    authorization_endpoint
    發行人
    scopes_supported
    token_endpoint
    userinfo_endpoint

在帳戶 B 中設定 Application Load Balancer

在帳戶 B 中完成以下步驟:

  1. 開啟 Amazon EC2 console (Amazon EC2 主控台)。
  2. 選取您的 Application Load Balancer。
  3. Listener and Rules (接聽程式和規則) 索引標籤上,選取 HTTPS:443 rule (HTTPS:443 規則)。
  4. Manage rules (管理規則) 下,選擇 Edit rule (編輯規則)。
  5. 選取 default rules (預設規則)。
  6. Actions (動作) 下,選擇 Edit rule (編輯規則)。
  7. Default (預設) 動作下,選取 Authenticate Users (驗證使用者)。
    **注意:**預設會選取 OIDC 身分提供者
  8. 將您記下的值輸入到以下欄位:
    Issuer (發行者),輸入發行者值。
    Authorization endpoint (授權端點),輸入 authorization_endpoint 值。
    Token endpoint (權杖端點),輸入 token_endpoint 值。
    User info endpoint (使用者資訊端點),輸入 userinfo_endpoint 值。
    Client ID (用戶端 ID),請輸入您的應用程式用戶端 ID。
    Client secret (用戶端密碼),請輸入您的應用程式用戶端密碼。
  9. 選擇 Save (儲存)。

測試設定

請完成下列步驟:

  1. 在您的瀏覽器中,輸入您的 Application Load Balancer 的網址。
  2. 確認您是否已重新導向至 Cognito 託管的 UI。
  3. 使用有效的使用者憑證登入。

**注意:**為避免錯誤,請確保所有網址都使用小寫字元。

相關資訊

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

使用 Application Load Balancer 驗證使用者

Application Load Balancer 的接聽程式規則

OIDC 使用者集區 IdP 驗證流程

AWS 官方已更新 7 個月前