本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用託管 UI 新增應用程式用戶端
建立使用者集區後,您可以為應用程式建立應用程式用戶端,該應用程式會帶出託管 UI 的內建網頁。在託管 UI 中,使用者可以:
建立 Amazon Cognito 使用者集區後,下一步是設定應用程式用戶端 。應用程式用戶端是某個應用程式的使用者集區設定。該應用程式可以使用託管的 UI、對使用者集區 的SDK請求API或兩者進行身分驗證。在此情況下,我們將為託管 UI 和 2.0 OAuth 授權伺服器設定應用程式用戶端。託管 UI 是處理常見使用者身分驗證流程的網頁集合,例如註冊、登入、密碼重設和多重要素身分驗證。
當您啟用託管 UI 時,您也可以啟用 OAuth 2.0 授權伺服器。授權伺服器會處理 OpenID Connect (OIDC) 和 OAuth 2.0 身分驗證流程。任務包括查詢使用者帳戶、發出權杖,以及與外部身分提供者整合。託管的 UI 和授權伺服器最適合用於您想要限制自訂 UI 建立層級的應用程式,以及應用程式最適合與OIDC身分提供者搭配使用的應用程式。
以下是託管 UI 和授權伺服器的一些功能:
託管 UI 應用程式用戶端獨有的功能
-
請求 machine-to-machine (M2M) 存取權杖。
在託管 UI 和 SDK型應用程式用戶端之間共用的功能
-
註冊使用者設定檔 。
-
允許使用者重設密碼 、確認新使用者帳戶 ,以及驗證電子郵件地址和電話號碼屬性 。
-
交換使用者存取權杖以取得屬性資訊 。這也適用於使用 SDK的 型應用程式GetUser。
為託管 UI 登入建立應用程式用戶端
-
前往 Amazon Cognito 主控台
。如果出現提示,請輸入您的 AWS 憑證。 -
選擇 User Pools (使用者集區)。
-
從清單中選擇現有的使用者集區,或建立使用者集區。如果您建立新的使用者集區,系統會在精靈期間提示您設定應用程式用戶端,並設定託管 UI。
-
選擇使用者集區的 App integration (應用程式整合) 索引標籤。
-
在網域旁,選擇動作,然後選取建立自訂網域或建立 Amazon Cognito 網域。如果您已設定使用者集區網域,請選擇刪除 Amazon Cognito 網域或刪除自訂網域,然後再建立新的自訂網域。
-
輸入可用的網域字首來搭配 Amazon Cognito 網域使用。如需設定 Custom domain (自訂網域) 的詳細資訊,請參閱將自有網域用於託管 UI。
-
選擇 Create (建立)。
-
導覽回相同使用者集區的 App integration (應用程式整合) 索引標籤,並找出 App clients (應用程式用戶端)。選擇 Create an app client (建立應用程式用戶端)。
-
選擇 Application type (應用程式類型)。系統會根據您的選擇提供一些建議的設定。使用託管 UI 的應用程式是 Public client (公有用戶端)。
-
輸入 App client name (應用程式用戶端名稱)。
-
在本練習中,請選擇 Don't generate client secret (不要產生用戶端密碼)。用戶端密碼是由機密應用程式使用,從集中式應用程式對使用者進行身分驗證。在本練習中,您將向您的使用者顯示託管 UI 登入頁面,而且不需要用戶端密碼。
-
選擇您將透過應用程式允許的身分驗證流程。確保已選取
USER_SRP_AUTH
。 -
根據需要自訂 token expiration (權杖過期)、Advanced security configuration (進階安全組態),以及 Attribute read and write permissions (屬性讀取和寫入許可)。如需詳細資訊,請參閱設定應用程式用戶端設定。
-
為您的應用程式用戶端新增回呼URL。這是託管 UI 身分驗證之後將您導向至的地方。在您可以在應用程式中實作登出之前,您不需要新增允許URL登出。
對於 iOS 或 Android 應用程式,您可以使用回呼,URL例如
myapp://
。 -
選取應用程式用戶端的 Identity providers (身分提供者)。至少啟用 Amazon Cognito 使用者集區作為提供者。
注意
若要使用外部身分提供者 (IdPs) 登入,例如 Facebook、Amazon、Google 和 Apple,以及透過 OpenID Connect (OIDC) 或 SAML IdPs,請先如透過第三方新增使用者集區登入 所示進行設定。然後返回應用程式用戶端設定頁面以啟用它們。
-
選擇 OAuth 2.0 授予類型 。選取 Authorization code grant (授權程式碼授予),傳回使用者集區權杖交換的授權程式碼。由於權杖不會直接向最終使用者公開,因此他們不太可能遭到入侵。但自訂應用程式需由後端交換使用者集區權杖所需的授權程式碼。基於安全考量,建議您針對行動應用程式使用授權碼授予流程,以及 Code Exchange 的驗證金鑰 (PKCE)。
選取隱含授予,讓 Amazon Cognito 傳回使用者集區 JSON Web 權杖 (JWT)。您可以使用此流程,但不提供後端為權杖交換授權程式碼。還可以協助您除錯權杖。
注意
您可以啟用 Authorization code grant (授權碼授予) 以及 Implicit code grant (隱含程式碼授予),並視需要使用授予。
唯有當您的應用程式需要代表自己,而不是代表使用者請求存取權杖,才選取 Client credentials (用戶端憑證)。
-
除非您特別想要排除某個選項,否則請選取所有 OpenID Connect scopes (OpenID Connect 範圍)。
-
選取您已設定的任何自訂範圍。自訂範圍通常與機密用戶端搭配使用。
-
選擇 Create (建立)。
查看您的登入頁面
在應用程式用戶端頁面 中,選取檢視託管 UI 以開啟新的瀏覽器索引標籤至已預先填入應用程式用戶端 ID、範圍、授權和回呼URL參數的登入頁面。
您可以使用下列 手動檢視託管 UI 登入網頁URL。請記下 response_type
。在此情況下,以 response_type=code 授予授權碼。
https://
your_domain
/login?response_type=code&client_id=your_app_client_id
&redirect_uri=your_callback_url
您可以使用下列項目檢視託管 UI 登入網頁,URL以取得隱含程式碼授予,其中 response_type=token 。成功登入後,Amazon Cognito 會將使用者集區權杖傳回至 Web 瀏覽器的網址列。
https://
your_domain
/login?response_type=token&client_id=your_app_client_id
&redirect_uri=your_callback_url
您可以在回應中的 #idtoken=
參數之後找到 JSON Web 權杖 (JWT) 身分權杖。
以下是來自隱含授予請求URL的範例回應。您的身分字符字串將更長。
https://www.example.com/#id_token=123456789tokens123456789&expires_in=3600&token_type=Bearer
Amazon Cognito 使用者集區權杖會使用RS256演算法簽署。您可以使用 解碼和驗證使用者集區權杖 AWS Lambda。如需詳細資訊,請參閱 AWS GitHub 網站上的解碼和驗證 Amazon Cognito JWT權杖
您的網域會顯示在 Domain name (網域名稱) 頁面中。您的應用程式用戶端 ID 和回呼URL會顯示在一般設定頁面上。如果您在主控台中所做的變更未立即出現,請等待幾分鐘,然後重新整理瀏覽器。