AWS 服务 从中访问ASP. NET 使用 Amazon Cognito 身份池的核心应用程序 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS 服务 从中访问ASP. NET 使用 Amazon Cognito 身份池的核心应用程序

由 Bibhuti Sahu (AWS) 和 Marcelo Barbosa () 创作 AWS

摘要

此模式讨论如何配置 Amazon Cognito 用户池和身份池,然后启用。ASP NET成功进行身份验证后 AWS 用于访问资源的核心应用程序。

Amazon Cognito 可为您的网络和移动应用程序提供身份验证、授权和用户管理。Amazon Cognito 的两个主要组件是用户池和身份池。

用户池是 Amazon Cognito 中的用户目录。利用用户池,您的用户可以通过 Amazon Cognito 登录您的 Web 或移动应用程序。您的用户还可以通过社交身份提供商(例如谷歌、Facebook、亚马逊或苹果)以及SAML身份提供商登录。

借助 Amazon Cognito 身份池(联合身份),您能够为用户创建唯一的身份,并通过身份提供商对其进行联合身份验证。使用身份池,您可以获得临时的、权限有限的 AWS 凭证来访问其他人。 AWS 服务在开始使用新的 Amazon Cognito 身份池之前,必须分配一个或多个 AWS Identity and Access Management (IAM) 角色来确定您希望应用程序用户对您的资源的访问级别。 AWS 身份池定义了两种类型的身份:经过身份验证的身份和未经身份验证的身份。可以在中为每种身份类型分配自己的角色IAM。经过身份验证的身份属于由公共登录提供商(Amazon Cognito 用户池、Facebook SAML、Google 或任何 OpenID Connect 提供商)或开发者提供商(您自己的后端身份验证流程)进行身份验证的用户,而未经身份验证的身份通常属于访客用户。当 Amazon Cognito 收到用户请求时,服务会确定该请求是通过身份验证的还是未经身份验证的,确定与该身份验证类型相关联的角色,然后使用附加到该角色的策略来响应请求。 

先决条件和限制

先决条件

  • AWS 账户 使用 Amazon Cognito 和权限 IAM

  • 访问您要使用的 AWS 资源

  • ASP。 NET酷睿 2.0.0 或更高版本

架构

技术堆栈

  • Amazon Cognito

  • ASP核心。NET

目标架构

如何从访问AWS服务ASP. NET 使用 Amazon Cognito 身份池的核心应用程序。

工具

工具SDKs、和 AWS 服务

代码

附加的 .zip 文件包含说明以下内容的示例文件:

  • 如何检索已登录用户的访问令牌

  • 如何使用访问令牌兑换 AWS 证书

  • 如何使用凭证访问亚马逊简单存储服务 (Amazon S3) Service 服务 AWS

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. 选择管理用户池

  3. 在页面右上角,选择创建用户池

  4. 为您的用户池提供一个名称,选择查看默认值,然后选择创建池

  5. 记下池 ID。

开发人员

添加应用程序客户端。

您可以创建一个应用程序,使用内置网页进行用户注册和登录。

  1. 在用户池页面左侧的导航栏上,选择一般设置下的应用程序客户端,然后选择添加应用程序客户端

  2. 为应用程序命名,然后选择创建应用程序客户端

  3. 记下应用程序客户端 ID 和客户端密钥(选择显示详细信息以查看客户端密钥)。

开发人员
任务描述所需技能

创建 身份池。

  1. 在 Amazon Cognito 控制台上选择管理身份池,然后选择创建新身份池

  2. 为身份池键入名称。

  3. 如果要启用未经身份验证的身份,请从未经身份验证的身份部分中选择该选项。

  4. 身份验证提供商部分,通过设置用户池 ID 和应用程序客户端 ID 来配置 Amazon Cognito 身份池,然后选择创建池。

开发人员

为身份池分配IAM角色。

您可以编辑经过身份验证和未经身份验证的用户的IAM角色,也可以保留默认值,然后选择 Allo w。对于这种模式,我们将编辑经过身份验证的IAM角色并提供访问权限s3:ListAllMyBuckets。有关示例代码,请参阅前面工具部分中提供的IAM角色。

开发人员

复制身份池 ID。

当您在上一步中选择允许时,将显示Amazon Cognito 入门页面。在此页面上,您可以从 “获取AWS凭据” 部分复制身份池 ID,也可以选择右上角的编辑身份池,然后从显示的屏幕中复制身份池 ID。

开发人员
任务描述所需技能

克隆示例ASP。 NET核心 Web 应用程序。

  1. 克隆示例。 NET来自 https://github.com/aws/aws-aspnet-cognito-identity-provid er.git 的核心 Web 应用程序。

  2. 导航到 samples 文件夹并打开解决方案。在此项目中,您将配置 appsettings.json 文件并添加一个新页面,该页面将在成功登录后呈现所有 S3 存储桶。

开发人员

添加依赖项。

将的 NuGet 依赖项Amazon.AspNetCore.Identity.Cognito添加到你的ASP。 NET核心应用程序。

开发人员

将配置键和值添加到appsettings.json

将附加的 appsettings.json 文件中的代码包含在 appsettings.json 文件中,然后将占位符替换为前面步骤中的值。

开发人员

创建新用户并登录。

在 Amazon Cognito 用户池中创建一个新用户,并验证该用户是否存在于用户池中的用户和组下。

开发人员

创建一个名MyS3Buckets为的新 Razor 页面。

添加一个新的ASP。 NETCore Razor Page 到您的示例应用程序,MyS3Bucket.cshtml然后替换所附示例MyS3Bucket.cshtml.cs中的内容。在 _Layout.cshtml 页面的导航下添加新的 MyS3Bucket 页面。

开发人员

故障排除

事务解决方案

打开 GitHub 存储库中的示例应用程序后,尝试将该 NuGet 包添加到 Samples 项目时会出现错误。

src 文件夹中,确保从 Amazon.AspNetCore.Identity.Cognito 文件中删除对 Samples.sln 项目的引用。然后,您可以毫无问题地将 NuGet 软件包添加到 Samples 项目中。

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip