AWS 服務 從 存取 ASP。NET 使用 Amazon Cognito 身分集區的核心應用程式 - AWS 方案指引

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

AWS 服務 從 存取 ASP。NET 使用 Amazon Cognito 身分集區的核心應用程式

由 Bibhuti Sahu (AWS) 和 Marcelo Barbosa (AWS) 建立

環境:PoC 或試行

技術:安全、身分、合規;Web 和行動應用程式

AWS 服務:Amazon Cognito

Summary

此模式討論如何設定 Amazon Cognito 使用者集區和身分集區,然後啟用 ASP。NET 核心應用程式可在成功身分驗證後存取 AWS 資源。

Amazon Cognito 為您的 Web 和行動應用程式提供身分驗證、授權和使用者管理。Amazon Cognito 的兩個主要元件是使用者集區和身分集區。

使用者集區是在 Amazon Cognito 中的使用者目錄。利用使用者集區,您的使用者可以透過 Amazon Cognito 登入您的 Web 或行動應用程式。您的使用者也可以透過 Google、Facebook、Amazon 或 Apple 等社交身分提供者,以及身分SAML提供者登入。

Amazon Cognito 身分集區 (聯合身分) 可讓您為使用者建立唯一身分,並將其與身分提供者聯合。使用身分集區,您可以取得暫時的有限權限 AWS 憑證來存取其他 AWS 服務。在您開始使用新的 Amazon Cognito 身分集區之前,您必須指派一或多個 AWS Identity and Access Management (IAM) 角色,以決定您希望應用程式使用者對 AWS 資源的存取層級。身分集區定義兩種類型的身分:已驗證和未驗證。每個身分類型都可以在 中指派自己的角色IAM。已驗證身分屬於由公有登入提供者 (Amazon Cognito 使用者集區、Facebook、GoogleSAML、 或任何 OpenID Connect 提供者) 或開發人員提供者 (您自己的後端身分驗證程序) 驗證的使用者,而未驗證身分通常屬於訪客使用者。當 Amazon Cognito 收到使用者請求時,服務會判斷請求是否經過身分驗證或未驗證、判斷哪個角色與該身分驗證類型相關聯,然後使用附加至該角色的政策來回應請求。 

先決條件和限制

先決條件

  • AWS 帳戶 具有 Amazon Cognito 和 IAM 許可的

  • 存取您要使用 AWS 的資源

  • ASP。NET Core 2.0.0 或更新版本

架構

技術堆疊

  • Amazon Cognito

  • ASP。NET 核心

目標架構

如何從 存取 AWS服務ASP。NET 使用 Amazon Cognito 身分集區的核心應用程式。

工具

工具SDKs、 和 AWS 服務

Code

附加的 .zip 檔案包含範例檔案,說明以下內容:

  • 如何擷取已登入使用者的存取權杖

  • 如何將存取權杖交換為 AWS 憑證

  • 如何使用 AWS 憑證存取 Amazon Simple Storage Service (Amazon S3) 服務

IAM 已驗證身分的角色

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*", "cognito-identity:*", "s3:ListAllMyBuckets*" ], "Resource": [ "*" ] } ] }

史詩

任務描述所需的技能

建立使用者集區。

  1. 登入 AWS Management Console 並開啟 Amazon Cognito 主控台

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

  3. 在頁面右上角,選擇 Create a user pool (建立使用者集區)。

  4. 為您的使用者集區提供名稱,選擇檢閱預設值 ,然後選擇建立集區

  5. 記下集區 ID。

開發人員

新增應用程式用戶端。

您可以建立應用程式,以使用內建網頁來註冊和登入您的使用者。

  1. 在使用者集區頁面左側的導覽列中,選擇一般設定 下的應用程式用戶端,然後選擇新增應用程式用戶端

  2. 為您的應用程式命名,然後選擇建立應用程式用戶端

  3. 請注意應用程式用戶端 ID 和用戶端秘密 (選擇顯示詳細資訊以查看用戶端秘密)。

開發人員
任務描述所需的技能

建立 身分集區。

  1. 在 Amazon Cognito 主控台上,選擇管理身分集區 ,然後選擇建立新的身分集區

  2. 輸入身分集區的名稱。

  3. 如果您想要啟用未驗證身分,請從未驗證身分區段中選取該選項。

  4. 身分驗證提供者區段中,透過設定使用者集區 ID 和應用程式用戶端 ID 來設定 Amazon Cognito 身分集區,然後選擇建立集區

開發人員

指派身分集區IAM的角色。

您可以編輯已驗證和未驗證使用者IAM的角色,或保留預設值,然後選擇允許 。對於此模式,我們將編輯已驗證IAM的角色,並為 提供存取權s3:ListAllMyBuckets。如需範例程式碼,請參閱工具一節中稍早提供IAM的角色。

開發人員

複製身分集區 ID。

當您在上一個步驟中選擇允許時,會顯示開始使用 Amazon Cognito 頁面。在此頁面上,您可以從取得AWS憑證區段複製身分集區 ID,或選擇右上角的編輯身分集區,然後從顯示的畫面中複製身分集區 ID。

開發人員
任務描述所需的技能

複製範例 ASP。NET 核心 Web 應用程式。

  1. 從 -provider.NETgit 複製範例 . core Web 應用程式。 https://github.com/aws/aws-aspnet-cognito-identity

  2. 導覽至 samples 資料夾並開啟解決方案。在此專案中,您將設定appsettings.json檔案並新增頁面,以在成功登入後呈現所有 S3 儲存貯體。

開發人員

新增相依性。

將 的 NuGet 相依性Amazon.AspNetCore.Identity.Cognito新增至您的 ASP。NET 核心應用程式。

開發人員

將組態金鑰和值新增至 appsettings.json

將來自附加appsettings.json檔案的程式碼包含在appsettings.json檔案中,然後將預留位置取代為先前步驟的值。

開發人員

建立新的使用者並登入。

在 Amazon Cognito 使用者集區中建立新的使用者,並確認使用者存在於使用者集區中的使用者和群組下。

開發人員

建立新的 Razor 頁面,名為 MyS3Buckets

新增 ASP。NET Core Razor 頁面至您的範例應用程式,並取代所連接範例MyS3Bucket.cshtmlMyS3Bucket.cshtml.cs的內容。在頁面的導覽下新增 MyS3Bucket _Layout.cshtml頁面。

開發人員

故障診斷

問題解決方案

從 GitHub 儲存庫開啟範例應用程式後,當您嘗試將 NuGet 套件新增至範例專案時,會收到錯誤。

src 資料夾中,請務必從 Samples.sln 檔案中移除Amazon.AspNetCore.Identity.Cognito專案的參考。然後,您可以將 NuGet 套件新增至 Sample 專案,而不會發生任何問題。

相關資源

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip