使用託管 UI 新增應用程式用戶端 - Amazon Cognito

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

使用託管 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 應用程式用戶端獨有的功能
在託管 UI 和 SDK型應用程式用戶端之間共用的功能
為託管 UI 登入建立應用程式用戶端
  1. 前往 Amazon Cognito 主控台。如果出現提示,請輸入您的 AWS 憑證。

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

  3. 從清單中選擇現有的使用者集區,或建立使用者集區。如果您建立新的使用者集區,系統會在精靈期間提示您設定應用程式用戶端,並設定託管 UI。

  4. 選擇使用者集區的 App integration (應用程式整合) 索引標籤。

  5. 網域旁,選擇動作,然後選取建立自訂網域建立 Amazon Cognito 網域。如果您已設定使用者集區網域,請選擇刪除 Amazon Cognito 網域刪除自訂網域,然後再建立新的自訂網域。

  6. 輸入可用的網域字首來搭配 Amazon Cognito 網域使用。如需設定 Custom domain (自訂網域) 的詳細資訊,請參閱將自有網域用於託管 UI

  7. 選擇 Create (建立)。

  8. 導覽回相同使用者集區的 App integration (應用程式整合) 索引標籤,並找出 App clients (應用程式用戶端)。選擇 Create an app client (建立應用程式用戶端)。

  9. 選擇 Application type (應用程式類型)。系統會根據您的選擇提供一些建議的設定。使用託管 UI 的應用程式是 Public client (公有用戶端)。

  10. 輸入 App client name (應用程式用戶端名稱)。

  11. 在本練習中,請選擇 Don't generate client secret (不要產生用戶端密碼)。用戶端密碼是由機密應用程式使用,從集中式應用程式對使用者進行身分驗證。在本練習中,您將向您的使用者顯示託管 UI 登入頁面,而且不需要用戶端密碼。

  12. 選擇您將透過應用程式允許的身分驗證流程。確保已選取 USER_SRP_AUTH

  13. 根據需要自訂 token expiration (權杖過期)、Advanced security configuration (進階安全組態),以及 Attribute read and write permissions (屬性讀取和寫入許可)。如需詳細資訊,請參閱設定應用程式用戶端設定

  14. 為您的應用程式用戶端新增回呼URL。這是託管 UI 身分驗證之後將您導向至的地方。在您可以在應用程式中實作登出之前,您不需要新增允許URL登出。

    對於 iOS 或 Android 應用程式,您可以使用回呼,URL例如 myapp://

  15. 選取應用程式用戶端的 Identity providers (身分提供者)。至少啟用 Amazon Cognito 使用者集區作為提供者。

    注意

    若要使用外部身分提供者 (IdPs) 登入,例如 Facebook、Amazon、Google 和 Apple,以及透過 OpenID Connect (OIDC) 或 SAML IdPs,請先如透過第三方新增使用者集區登入 所示進行設定。然後返回應用程式用戶端設定頁面以啟用它們。

  16. 選擇 OAuth 2.0 授予類型 。選取 Authorization code grant (授權程式碼授予),傳回使用者集區權杖交換的授權程式碼。由於權杖不會直接向最終使用者公開,因此他們不太可能遭到入侵。但自訂應用程式需由後端交換使用者集區權杖所需的授權程式碼。基於安全考量,建議您針對行動應用程式使用授權碼授予流程,以及 Code Exchange 的驗證金鑰 (PKCE)

    選取隱含授予,讓 Amazon Cognito 傳回使用者集區 JSON Web 權杖 (JWT)。您可以使用此流程,但不提供後端為權杖交換授權程式碼。還可以協助您除錯權杖。

    注意

    您可以啟用 Authorization code grant (授權碼授予) 以及 Implicit code grant (隱含程式碼授予),並視需要使用授予。

    唯有當您的應用程式需要代表自己,而不是代表使用者請求存取權杖,才選取 Client credentials (用戶端憑證)

  17. 除非您特別想要排除某個選項,否則請選取所有 OpenID Connect scopes (OpenID Connect 範圍)。

  18. 選取您已設定的任何自訂範圍。自訂範圍通常與機密用戶端搭配使用。

  19. 選擇 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會顯示在一般設定頁面上。如果您在主控台中所做的變更未立即出現,請等待幾分鐘,然後重新整理瀏覽器。