本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將自有網域用於託管 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。其中包括
cognito
、cognito-fl
和XSRF-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。
步驟 2:新增別名目標和子網域
在此步驟中,您可以透過網域名稱伺服器 (DNS) 服務提供者設定別名,該服務提供者會指向上一步的別名目標。如果您使用 Amazon Route 53 進行DNS地址解析,請選擇 區段 若要使用 Route 53 新增別名目標和子網域。
-
如果您未使用 Route 53 解析DNS地址,則必須使用DNS服務供應商的組態工具,將上一步的別名目標新增至網域DNS的記錄。您的DNS提供者也需要為您的自訂網域設定子網域。
-
登入 Route 53 主控台
。若出現提示,請輸入 AWS 憑證。 -
如果您在 Route 53 中沒有公有託管區域,請使用您自訂網域的父系根建立一個託管區域。如需詳細資訊,請參閱 Amazon Route 53 開發人員指南 中的建立公有託管區域。
-
選擇建立託管區域。
-
輸入父網域,例如
auth.example.com
,例如您的自訂網域的 ,myapp.auth.example.com
,從網域名稱清單中。 -
輸入託管區域的說明。
-
選擇 Public hosted zone (公有託管區域) 的託管區域 Type (類型),以允許公有用戶端解析您的自訂網域。不支援選擇 Private hosted zone (私有託管區域)。
-
根據需要套用 Tags (標籤)。
-
選擇建立託管區域。
注意
您也可以為自訂網域建立新的託管區域,並在父託管區域中設定委派,將查詢導向子網域託管區域。否則,請建立 A 記錄。此方法為您的託管區域提供更多靈活性與安全性。如需詳細資訊,請參閱為透過 Amazon Route 53 託管的網域建立子網域
。
-
-
在 Hosted Zones (託管區域) 頁面上,選擇託管區域的名稱。
-
如果您還沒有自訂網域的父網域,請DNS新增記錄。使用下列屬性為父網域建立DNS記錄:
-
記錄名稱 :保留空白。
-
記錄類型:
A
。 -
別名 :不啟用。
-
值 :輸入您選擇的目標。此記錄必須解析為某些 ,但記錄的值與 Amazon Cognito 無關。
-
TTL:設定為您的偏好TTL或保留為預設值。
-
路由政策 :選擇簡易路由 。
-
-
選擇建立記錄。以下是網域的範例記錄
example.com
:example.com.
60 IN A198.51.100.1
注意
Amazon Cognito 會驗證您的自訂網域的父網域是否有DNS記錄,以防止意外綁架生產網域。如果您沒有父網域DNS的記錄,Amazon Cognito 會在您嘗試設定自訂網域時傳回錯誤。授權開始 (SOA) 記錄不足以DNS進行父網域驗證。
-
為具有下列屬性的自訂網域新增另一個DNS記錄:
-
記錄名稱 :您的自訂網域字首,例如
auth
為 建立記錄auth.example.com
。 -
記錄類型:
A
。 -
別名 :啟用。
-
將流量路由至 :選擇別名至 Cloudfront 分佈 。輸入您先前記錄的別名目標,例如
123example.cloudfront.net
。 -
路由政策 :選擇簡易路由 。
-
-
選擇建立記錄。
注意
您的新記錄可能需要約 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。