將自有網域用於託管 UI - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將自有網域用於託管 UI

設定應用程式用戶端後,您可以使用 Amazon Cognito 託管 UI 和授權伺服器端點的自訂網域來設定使用者集區。使用自訂網域,使用者可以使用您自己的 Web 地址登入您的應用程式,而不是預設的 Amazon Cognito 網域。自訂網域使用熟悉的網域名稱來改善應用程式的使用者信任,特別是當根網域與託管應用程式的網域相符時。自訂網域也可以符合組織安全需求。

自訂網域有一些先決條件,包括使用者集區、應用程式用戶端和您擁有的 Web 網域。自訂網域也需要自訂網域的SSL憑證,在美國東部 AWS Certificate Manager (維吉尼亞北部ACM) 使用 () 進行管理。Amazon Cognito 會建立 Amazon CloudFront 分佈,該分佈在傳輸時以ACM憑證保護,必須是自訂網域名稱的DNS別名目標。

這些元素準備就緒後,您可以透過 Amazon Cognito 主控台或 將自訂網域新增至使用者集區API。這包括指定網域名稱和SSL憑證,然後使用提供的別名目標更新DNS組態。進行這些變更之後,您可以驗證登入頁面是否可在自訂網域存取。

將自訂網域新增到使用者集區

若要將自訂網域新增至您的使用者集區,您可以在 Amazon Cognito 主控台中指定網域名稱,並提供您使用 AWS Certificate Manager() 管理的憑證ACM。新增網域後,Amazon Cognito 會提供別名目標,您便會將其新增至DNS您的組態。

必要條件

開始之前,您需要:

  • 搭配應用程式用戶端的使用者集區。如需詳細資訊,請參閱使用者集區入門

  • 您擁有的 Web 網域。其父網域必須具有有效的 DNS A 記錄 。您可以為此記錄指派任何值。父網域可能是網域的根,也可以是網域階層中向上一層的子網域。例如,如果您的自訂網域是 auth.xyz.example.com,則 Amazon Cognito 必須能夠將 yz.example.com 解析至一個 IP 地址。為了防止意外影響客戶基礎設施,Amazon Cognito 不支援將頂層網域 (TLDs) 用於自訂網域。如需詳細資訊,請參閱網域名稱

  • 能夠為您的自訂網域建立子網域。建議您使用 auth 做為子網域。例如:auth.example.com.

    注意

    如果您沒有萬用字元憑證,那麼您可能需要為自訂網域的子網域取得新憑證。

  • 由 管理的安全通訊端層 (SSL) 憑證ACM。

    注意

    您必須先在ACM主控台中將 AWS 區域變更為美國東部 (維吉尼亞北部),才能請求或匯入憑證。

  • 允許使用者集區授權伺服器將 Cookie 新增至使用者工作階段的應用程式。Amazon Cognito 為託管 UI 設定數個必要的 Cookie。其中包括 cognitocognito-flXSRF-TOKEN。雖然每個 Cookie 都符合瀏覽器大小限制,但使用者集區組態的變更可能會導致託管的 UI Cookie 大小增加。自訂網域前方的 Application Load Balancer (ALB) 等中繼服務可能會強制執行最大標頭大小或總 Cookie 大小。如果您的應用程式也設定自己的 Cookie,則使用者的工作階段可能會超過這些限制。我們建議,為了避免大小限制衝突,您的應用程式未在託管 UI 子網域上設定 Cookie。

  • 更新 Amazon CloudFront 分佈的許可。您可以透過將下列IAM政策陳述式連接至 中的使用者來執行此操作 AWS 帳戶:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontUpdateDistribution", "Effect": "Allow", "Action": [ "cloudfront:updateDistribution" ], "Resource": [ "*" ] } ] }

    如需在 中授權動作的詳細資訊 CloudFront,請參閱針對 使用以身分為基礎的政策 (IAM 政策) CloudFront

    Amazon Cognito 一開始會使用您的IAM許可來設定 CloudFront分佈,但分佈是由 管理 AWS。您無法變更 Amazon Cognito 與使用者集區相關聯的 CloudFront 分佈組態。例如,您無法更新安全政策中支援的TLS版本。

步驟 1:輸入您的自訂網域名稱

您可以使用 Amazon Cognito 主控台或 ,將網域新增至使用者集區API。

Amazon Cognito console
從 Amazon Cognito 主控台新增網域到您的使用者集區:
  1. 登入 Amazon Cognito 主控台。若出現提示,請輸入 AWS 憑證。

  2. 選擇 User pools (使用者集區)。

  3. 選擇您要為其新增網域的使用者集區。

  4. 選擇 App integration (應用程式整合) 索引標籤。

  5. Domain (網域) 旁,選擇 Actions (動作),然後選擇 Create custom domain (建立自訂網域)。

    注意

    如果您已設定使用者集區網域,請選擇 Delete Cognito domain (刪除 Cognito 網域) 或者 Delete custom domain (刪除自訂網域),以在建立新的自訂網域前刪除現有網域。

  6. 針對自訂網域 ,輸入您要搭配 URL Amazon Cognito 使用的網域的 。網域名稱只能包含小寫字母、數字和連字號。第一個字元或最後一個字元切勿使用連字號。使用句號分隔子網域名稱。

  7. 針對ACM憑證 ,選擇您要用於網域的SSL憑證。只有美國東部 (維吉尼亞北部) 的ACM憑證才有資格與 Amazon Cognito 自訂網域搭配使用,無論您 AWS 區域 的使用者集區為何。

    如果您沒有可用的憑證,您可以使用 ACM 在美國東部 (維吉尼亞北部) 佈建憑證。如需詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的入門

  8. 選擇 Create (建立)。

  9. Amazon Cognito 會讓您返回 App integration (應用程式整合) 索引標籤。隨即顯示標題為在網域中建立別名記錄DNS的訊息。請記下主控台中顯示的 Domain (網域) 和 Alias target (別名目標)。會在下一個步驟中使用它們,以將流量導向您的自訂網域。

API
若要使用 Amazon Cognito 將網域新增至使用者集區API:

步驟 2:新增別名目標和子網域

在此步驟中,您可以透過網域名稱伺服器 (DNS) 服務提供者設定別名,該服務提供者會指向上一步的別名目標。如果您使用 Amazon Route 53 進行DNS地址解析,請選擇 區段 若要使用 Route 53 新增別名目標和子網域。

  • 如果您未使用 Route 53 解析DNS地址,則必須使用DNS服務供應商的組態工具,將上一步的別名目標新增至網域DNS的記錄。您的DNS提供者也需要為您的自訂網域設定子網域。

  1. 登入 Route 53 主控台。若出現提示,請輸入 AWS 憑證。

  2. 如果您在 Route 53 中沒有公有託管區域,請使用您自訂網域的父系根建立一個託管區域。如需詳細資訊,請參閱 Amazon Route 53 開發人員指南 中的建立公有託管區域

    1. 選擇建立託管區域

    2. 輸入父網域,例如 auth.example.com,例如您的自訂網域的 ,myapp.auth.example.com,從網域名稱清單中。

    3. 輸入託管區域的說明

    4. 選擇 Public hosted zone (公有託管區域) 的託管區域 Type (類型),以允許公有用戶端解析您的自訂網域。不支援選擇 Private hosted zone (私有託管區域)。

    5. 根據需要套用 Tags (標籤)。

    6. 選擇建立託管區域

      注意

      您也可以為自訂網域建立新的託管區域,並在父託管區域中設定委派,將查詢導向子網域託管區域。否則,請建立 A 記錄。此方法為您的託管區域提供更多靈活性與安全性。如需詳細資訊,請參閱為透過 Amazon Route 53 託管的網域建立子網域

  3. Hosted Zones (託管區域) 頁面上,選擇託管區域的名稱。

  4. 如果您還沒有自訂網域的父網域,請DNS新增記錄。使用下列屬性為父網域建立DNS記錄:

    • 記錄名稱 :保留空白。

    • 記錄類型:A

    • 別名 :不啟用。

    • :輸入您選擇的目標。此記錄必須解析為某些 ,但記錄的值與 Amazon Cognito 無關。

    • TTL:設定為您的偏好TTL或保留為預設值。

    • 路由政策 :選擇簡易路由

  5. 選擇建立記錄。以下是網域的範例記錄 example.com:

    example.com. 60 IN A 198.51.100.1

    注意

    Amazon Cognito 會驗證您的自訂網域的父網域是否有DNS記錄,以防止意外綁架生產網域。如果您沒有父網域DNS的記錄,Amazon Cognito 會在您嘗試設定自訂網域時傳回錯誤。授權開始 (SOA) 記錄不足以DNS進行父網域驗證。

  6. 為具有下列屬性的自訂網域新增另一個DNS記錄:

    • 記錄名稱 :您的自訂網域字首,例如auth為 建立記錄auth.example.com

    • 記錄類型:A

    • 別名 :啟用。

    • 流量路由至 :選擇別名至 Cloudfront 分佈 。輸入您先前記錄的別名目標,例如 123example.cloudfront.net

    • 路由政策 :選擇簡易路由

  7. 選擇建立記錄

    注意

    您的新記錄可能需要約 60 秒的時間,才能傳播至所有 Route 53 DNS 伺服器。您可以使用 Route 53 GetChangeAPI方法驗證您的變更是否已傳播。

步驟 3:驗證您的登入頁面

  • 驗證可從自訂網域使用上述登入頁面。

    在瀏覽器中輸入這個地址後,登入您的自訂網域和子網域。這是自訂網域URL的範例 example.com 使用子網域 auth:

    https://myapp.auth.example.com/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

變更自訂網域的SSL憑證

必要時,您可以使用 Amazon Cognito 變更自訂網域所要套用的憑證。

通常,在使用 進行例行憑證續約之後,這是不必要的ACM。當您在 中續約現有憑證時ACM,憑證ARN的 會保持不變,而您的自訂網域會自動使用新的憑證。

不過,如果您將現有憑證取代為新的憑證, 會為新憑證ACM提供新的 ARN。若要將新憑證套用至自訂網域,您必須ARN將此憑證提供給 Amazon Cognito 。

在您提供新憑證之後,Amazon Cognito 需歷經 1 小時才能將其分發到您的自訂網域。

開始之前

您必須先將憑證新增至 ,才能在 Amazon Cognito 中變更憑證ACM。如需詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的入門

當您將憑證新增至 時ACM,您必須選擇美國東部 (維吉尼亞北部) 作為 AWS 區域。

您可以使用 Amazon Cognito 主控台或 來變更您的憑證API。

AWS Management Console
從 Amazon Cognito 主控台續約憑證:
  1. 登入 AWS Management Console 並在 開啟 Amazon Cognito 主控台https://console.aws.amazon.com/cognito/home

  2. 選擇 User Pools (使用者集區)。

  3. 選擇您要為其更新憑證的使用者集區。

  4. 選擇 App integration (應用程式整合) 索引標籤。

  5. 選擇動作 編輯ACM憑證

  6. 選取您要與自訂網域產生關聯的新憑證。

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

API
若要續約憑證 (Amazon Cognito API)