Acceda Servicios de AWS desde unASP. NETAplicación principal que utiliza grupos de identidades de Amazon Cognito - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceda Servicios de AWS desde unASP. NETAplicación principal que utiliza grupos de identidades de Amazon Cognito

Creada por Bibhuti Sahu () y Marcelo Barbosa () AWS AWS

Entorno: PoC o piloto

Tecnologías: seguridad, identidad, cumplimiento; aplicaciones web y móviles

AWSservicios: Amazon Cognito

Resumen

Este patrón explica cómo puede configurar los grupos de usuarios y grupos de identidades de Amazon Cognito y, a continuación, habilitar un. ASP NETAplicación básica para acceder a AWS los recursos tras una autenticación correcta.

Amazon Cognito ofrece autenticación, autorización y administración de usuarios para sus aplicaciones móviles y web. Los dos componentes principales de Amazon Cognito son los grupos de usuarios y los grupos de identidades.

Un grupo de usuarios es un directorio de usuarios en Amazon Cognito. Con un grupo de usuarios, los usuarios pueden iniciar sesión en su aplicación web o móvil mediante Amazon Cognito. Los usuarios también pueden iniciar sesión a través de proveedores de identidad social como Google, Facebook, Amazon o Apple, y a través de proveedores de SAML identidad.

Con los grupos de identidades de Amazon Cognito (identidades federadas), se pueden crear identidades únicas para los usuarios y federarlas con proveedores de identidad. Con un grupo de identidades, puedes obtener AWS credenciales temporales con privilegios limitados para acceder a otros. Servicios de AWS Antes de empezar a usar su nuevo grupo de identidades de Amazon Cognito, debe asignar una o más funciones AWS Identity and Access Management (IAM) para determinar el nivel de acceso que desea que los usuarios de la aplicación tengan a sus AWS recursos. Los grupos de identidades definen dos tipos de identidades: autenticadas y sin autenticar. A cada tipo de identidad se le puede asignar su propia función. IAM Las identidades autenticadas pertenecen a los usuarios autenticados por un proveedor de inicio de sesión público (grupos de usuarios de Amazon Cognito, FacebookSAML, Google o cualquier proveedor de OpenID Connect) o un proveedor de desarrolladores (su propio proceso de autenticación de back-end), mientras que las identidades no autenticadas suelen pertenecer a los usuarios invitados. Cuando Amazon Cognito reciba una solicitud de usuario, el servicio determina si la solicitud está autenticada o no autenticada, determina qué rol está asociado a qué tipo de autenticación y, a continuación, usa la política adjunta a ese rol para responder a la solicitud. 

Requisitos previos y limitaciones

Requisitos previos 

  • Y Cuenta de AWS con Amazon Cognito y permisos IAM

  • Acceda a los AWS recursos que desee utilizar

  • ASP. NETCore 2.0.0 o posterior

Arquitectura

Pila de tecnología

  • Amazon Cognito

  • ASP. NETNúcleo

Arquitectura de destino

Cómo acceder a AWS los servicios desde unASP. NETAplicación principal que utiliza grupos de identidades de Amazon Cognito.

Herramientas

Herramientas SDKs y Servicios de AWS

Código

El archivo .zip adjunto incluye archivos de muestra que ilustran lo siguiente:

  • Cómo recuperar un token de acceso para el usuario que ha iniciado sesión

  • ¿Cómo intercambiar un token de acceso por credenciales AWS

  • Cómo acceder al servicio Amazon Simple Storage Service (Amazon S3) con credenciales AWS

IAMfunción para las identidades autenticadas

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

Epics

TareaDescripciónHabilidades requeridas

Cree un grupo de usuarios.

  1. Inicie sesión en la consola de Amazon Cognito AWS Management Console y ábrala.

  2. Elija Manage User Pools (Administrar grupos de usuarios).

  3. En la esquina superior derecha de la página, elija Create a User Pool (Crear un grupo de usuarios).

  4. Proporcione un nombre para su grupo de usuarios, seleccione Revisar valores predeterminados y, a continuación, seleccione Crear grupo.

  5. Apunte el ID de grupo.

Desarrollador

Agregar un cliente de aplicación.

Puede crear una aplicación para utilizar las páginas web integradas para que sus usuarios se inscriban e inicien sesión.

  1. En la barra de navegación de la parte izquierda de la página del grupo de usuarios, seleccione Clientes de aplicaciones en Configuración general y, a continuación, seleccione Añadir un cliente de aplicaciones.

  2. Asigne un nombre a su aplicación y, a continuación elija Crear cliente de aplicación.

  3. Anote el ID de cliente de la aplicación y el secreto del cliente (seleccione Mostrar detalles para ver el secreto del cliente).

Desarrollador
TareaDescripciónHabilidades requeridas

Crear un grupo de identidades de .

  1. En la consola de Amazon Cognito, elija Administrar grupos de identidades y, a continuación, Crear nuevo grupo de identidades.

  2. Especifique un nombre para el grupo de identidades.

  3. Si desea habilitar las identidades no autenticadas, seleccione esa opción en la sección Identidades no autenticadas.

  4. En la sección Proveedores de autenticación, configure el grupo de identidades de Amazon Cognito estableciendo el ID del grupo de usuarios y el ID del cliente de la aplicación y, a continuación, seleccione Create Pool.

Desarrollador

Asigne IAM funciones al grupo de identidades.

Puede editar los IAM roles de los usuarios autenticados y no autenticados o mantener los valores predeterminados y, a continuación, elegir Permitir. Para este patrón, editaremos el IAM rol autenticado y proporcionaremos acceso al mismo. s3:ListAllMyBuckets Para ver un ejemplo de código, consulta la IAM función proporcionada anteriormente en la sección Herramientas.

Desarrollador

Copie el ID del grupo de identidades.

Si selecciona Permitir en el paso anterior, se muestra la página Introducción a Amazon Cognito. En esta página, puede copiar el ID del grupo de identidades de la sección Obtener AWS credenciales o elegir Editar grupo de identidades en la esquina superior derecha y copiar el ID del grupo de identidades de la pantalla que aparece.

Desarrollador
TareaDescripciónHabilidades requeridas

Clona la muestraASP. NETAplicación web básica.

  1. Clona la muestra. NETaplicación web principal de https://github.com/aws/aws-aspnet-cognito-identity-provider.git.

  2. Navegue hasta la carpeta samples y abra la solución. En este proyecto, usted configurará el archivo appsettings.json y agregará una página nueva que mostrará todos los buckets de S3 después de iniciar sesión correctamente.

Desarrollador

Agregar dependencias.

Agregue una NuGet dependencia para su. Amazon.AspNetCore.Identity.Cognito ASP NETAplicación principal.

Desarrollador

Añada las claves y valores de configuración aappsettings.json.

Incluya el código del archivo appsettings.json adjunto en su archivo appsettings.json y, a continuación, sustituya los marcadores de posición por los valores de los pasos anteriores.

Desarrollador

Cree un nuevo usuario e inicie sesión.

Cree un nuevo usuario en el grupo de usuarios de Amazon Cognito y verifique que el usuario existe en Usuarios y grupos en el grupo de usuarios.

Desarrollador

Crea una nueva Razor Page llamadaMyS3Buckets.

Agrega un nuevoASP. NETCrea Razor Page en tu aplicación de ejemplo y reemplaza el contenido por MyS3Bucket.cshtml y MyS3Bucket.cshtml.cs desde el ejemplo adjunto. Agregue la nueva página de MyS3bucket en la barra de navegación de la página _Layout.cshtml.

Desarrollador

Resolución de problemas

ProblemaSolución

Tras abrir la aplicación de ejemplo desde el GitHub repositorio, aparece un error al intentar añadir el NuGet paquete al proyecto de Samples.

En la carpeta src, asegúrese de eliminarlo de la referencia al proyecto Amazon.AspNetCore.Identity.Cognito del archivo Samples.sln. A continuación, puede añadir el NuGet paquete al proyecto Samples sin ningún problema.

Recursos relacionados

Conexiones

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip