針對行動應用程式使用 Amazon Cognito - AWS Identity and Access Management

針對行動應用程式使用 Amazon Cognito

使用 Web 聯合身分的偏好的方式是使用 Amazon Cognito。例如,開發人員 Adele 正在為行動裝置建置遊戲,其中分數和描述檔這類使用者資料都存放在 Amazon S3 和 Amazon DynamoDB 中。Adele 也會將此資料存放在裝置本機,並使用 Amazon Cognito 跨多個裝置保持同步。她了解為了安全和維護之故,長期的 AWS 安全憑證不應隨遊戲發散。她也了解遊戲可能有大量的使用者。針對所有這些原因,她不想要針對每個玩家在 IAM 建立新的使用者身分。反之,她會設計遊戲,讓使用者可以使用他們透過知名的外部身分提供者 (IdP) 建立的身分登入,例如 Login with AmazonFacebookGoogle 或任何 OpenID Connect (OIDC) 相容的 IdP。她的遊戲可善用其中一個提供者的身分驗證機制,藉以驗證使用者的身分。

若要讓行動應用程式存取她的 AWS 資源,Adele 會先使用她選擇的 IdP 註冊開發人員 ID。她也會使用這些提供者的每一個來設定應用程式。Adele 在包含遊戲 Amazon S3 儲存貯體和 DynamoDB 資料表的 AWS 帳戶中使用 Amazon Cognito 建立 IAM 角色,而該角色精準定義遊戲所需的許可。如果她正在使用 OIDC IdP,則也會建立 IAM OIDC 身分提供者實體,以在她的 AWS 帳戶與 IdP 之間建立信任。

在應用程式的程式碼中,Adele 呼叫用於之前設定的 IdP 的登入介面。IdP 會處理讓使用者登入的所有詳細資訊,而應用程式會從提供者取得 OAuth 存取權杖或 OIDC ID 權杖。Adele 的應用程式可以交易此身分驗證資訊以取得一組暫時性安全憑證,其中包含 AWS 存取金鑰 ID、私密存取金鑰,和工作階段權杖。應用程式接著可以使用這些憑證來存取 AWS 提供的 Web 服務。該應用程式僅限於許可,其定義於其擔任的角色。

下圖使用 Login with Amazon 做為 IdP,顯示一個有關如何運作的簡化流程。對於步驟 2,應用程式也可使用 Facebook、Google 或任何 OIDC 相容的 IdP,但此處未顯示。


      使用 Amazon Cognito 的範例工作流程來聯合行動應用程式的使用者

  1. 客戶在行動裝置啟動您的應用程式。該應用程式要求使用者登入。

  2. 該應用程式會使用 Login with Amazon 資源來接受使用者的憑證。

  3. 應用程式使用 Amazon Cognito API 操作,用 Login with Amazon 權杖交換 Amazon Cognito ID 權杖。

  4. 該應用程式要求暫時性安全憑證從 AWS STS 傳遞 Amazon Cognito 權杖。

  5. 透過應用程式可使用暫時性安全憑證存取操作應用程式所需的任何 AWS 資源。與暫時性安全憑證相關聯的角色及指派政策,決定了可以存取哪些內容。

使用下列程序來設定您的應用程式使用 Amazon Cognito 驗證使用者,並讓應用程式存取 AWS 資源。如需關於完成此案例的特定步驟,請參閱 Amazon Cognito 的說明文件。

  1. (選用) 使用 Login with Amazon、Facebook、Google 或其他任何 OpenID Connect (OIDC) 相容的 IdP 註冊為開發人員,並使用提供者設定一個或多個應用程式。此步驟是可選的,因為 Amazon Cognito 也支援未經驗證的使用者存取權 (訪客)。

  2. 前往 AWS Management Console 中的 Amazon Cognito 主控台。使用 Amazon Cognito 精靈來建立身分集區,而該集區是一種容器,可讓 Amazon Cognito 用於為您的應用程式整理最終使用者身分。您可以在應用程式之間分享身分集區。當您設定身分集區時,Amazon Cognito 會建立一或兩個 IAM 角色 (一個用於已驗證的身分,一個用於未經驗證的「訪客」身分),其為 Amazon Cognito 使用者定義許可。

  3. 下載並整合 AWS SDK for iOSAWS SDK for Android 與您的應用程式,並匯入所需檔案以使用 Amazon Cognito。

  4. 建立 Amazon Cognito 憑證提供者的執行個體,並傳遞身分集區 ID、您的 AWS 帳戶號碼,以及與身分集區建立關聯之角色的 Amazon 資源名稱 (ARN)。AWS Management Console 中的 Amazon Cognito 精靈提供範本程式碼來協助您快速入門。

  5. 當您的應用程式存取 AWS 資源時,將憑證提供者執行個體傳遞到用戶端物件,該物件會將暫時性安全憑證傳遞到用戶端。憑證的許可是根據您稍早定義的一個或多個角色。

如需詳細資訊,請參閱下列內容: