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

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

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

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

為了使移動應用程序能夠訪問她的 AWS 資源,阿黛爾首先使用她選擇 IdPs的開發人員 ID 註冊。她也會使用這些提供者的每一個來設定應用程式。在包 AWS 帳戶 含遊戲的 Amazon S3 儲存貯體和 DynamoDB 表格中,Adele 使用 Amazon Cognito 建立 IAM 角色,以精確定義遊戲所需的許可。如果她使用的是 OIDC IdP,她也會建立 IAM OIDC 身分提供者實體,以便在其中的 Amazon Cognito 身分集區與 IdP 之間建立信任。 AWS 帳戶

在應用程式的程式碼中,Adele 呼叫用於之前設定的 IdP 的登入介面。IdP 會處理讓使用者登入的所有詳細資訊,而應用程式會從提供者取得 OAuth 存取權杖或 OIDC ID 權杖。Adele 的應用程序可以將此身份驗證信息交換為由訪問密鑰 ID,秘密 AWS 訪問密鑰和會話令牌組成的一組臨時安全憑據。然後,應用程序可以使用這些憑據訪問提供的 Web 服務 AWS。該應用程式僅限於許可,其定義於其擔任的角色。

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

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

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

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

  3. 應用程式使用 Amazon Cognito API 操作 GetIdGetCredentialsForIdentity,用 Login with Amazon 字符交換 Amazon Cognito ID 字符。Amazon Cognito 已設定為信任您的 Login with Amazon 專案,會產生一個權杖,它與 AWS STS交換暫存工作階段憑證。

  4. 該應用程序從 Amazon Cognito 接收暫時安全憑證。您的應用程式也可以使用 Amazon Cognito 中的基本 (傳統) 工作流程,從 AWS STS 使AssumeRoleWithWebIdentity用中擷取權杖。如需詳細資訊,請參閱《Amazon Cognito 開發人員指南》中的身分集區 (聯合身分) 驗證流程

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

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

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

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

  3. 整合 AWSAmplify 與您的應用程式,並匯入所需檔案以使用 Amazon Cognito。

  4. 建立 Amazon Cognito 憑證提供者的執行個體,並傳遞身分集區 ID、您的 AWS 帳戶 號碼,以及與身分集區建立關聯之角色的 Amazon Resource Name (ARN)。中的 Amazon Cognito 精靈 AWS Management Console 提供可協助您開始使用的範例程式碼。

  5. 當您的應用程序訪問 AWS 資源時,將憑據提供程序實例傳遞給客戶端對象,該客戶端對象將臨時安全憑據傳遞給客戶端。憑證的許可是根據您稍早定義的一個或多個角色。

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