Accédez aux services AWS depuis une application ASP.NET Core à l'aide des pools d'identités Amazon Cognito - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accédez aux services AWS depuis une application ASP.NET Core à l'aide des pools d'identités Amazon Cognito

Créée par Bibhuti Sahu (AWS) et Marcelo Barbosa (AWS)

Environnement : PoC ou pilote

Technologies : sécurité, identité, conformité ; applications Web et mobiles

Services AWS : Amazon Cognito

Récapitulatif

Ce modèle explique comment configurer les groupes d'utilisateurs et les groupes d'identités Amazon Cognito, puis permettre à une application ASP.NET Core d'accéder aux ressources AWS après une authentification réussie.

Amazon Cognito fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour vos applications Web et mobiles. Les deux principaux composants d'Amazon Cognito sont les groupes d'utilisateurs et les groupes d'identités.

Un groupe d'utilisateurs est un répertoire d'utilisateurs dans Amazon Cognito. Avec un groupe d'utilisateurs, vos utilisateurs peuvent se connecter à votre application web ou mobile via Amazon Cognito. Vos utilisateurs peuvent également se connecter via des fournisseurs d'identité sociale tels que Google, Facebook, Amazon ou Apple, et via des fournisseurs d'identité SAML.

Les groupes d'identités Amazon Cognito (identités fédérées) vous permettent de créer des identités uniques pour vos utilisateurs et de les fédérer avec des fournisseurs d'identité. Avec un pool d'identités, vous pouvez obtenir des informations d'identification AWS temporaires à privilèges limités pour accéder à d'autres services AWS. Avant de commencer à utiliser votre nouveau pool d'identités Amazon Cognito, vous devez attribuer un ou plusieurs rôles AWS Identity and Access Management (IAM) afin de déterminer le niveau d'accès que vous souhaitez accorder aux utilisateurs de votre application à vos ressources AWS. Les groupes d'identités définissent deux types d'identités : les identités authentifiées et celles qui ne le sont pas. Chaque type d'identité peut se voir attribuer son propre rôle dans IAM. Les identités authentifiées appartiennent aux utilisateurs authentifiés par un fournisseur de connexion public (groupes d'utilisateurs Amazon Cognito, Facebook, Google, SAML ou tout autre fournisseur OpenID Connect) ou par un fournisseur de développement (votre propre processus d'authentification principal), tandis que les identités non authentifiées appartiennent généralement aux utilisateurs invités. Lorsqu'Amazon Cognito reçoit une demande d'utilisateur, le service détermine si la demande est authentifiée ou non, détermine quel rôle est associé à ce type d'authentification, puis utilise la politique associée à ce rôle pour répondre à la demande. 

Conditions préalables et limitations

Prérequis

  • Un compte AWS avec des autorisations Amazon Cognito et IAM

  • Accès aux ressources AWS que vous souhaitez utiliser

  • ASP.NET Core 2.0.0 ou version ultérieure

Architecture

Pile technologique

  • Amazon Cognito

  • Noyau ASP.NET

Architecture cible

Outils

Outils, kits de développement logiciel et services AWS

Code

Le fichier .zip joint contient des exemples de fichiers illustrant les éléments suivants :

  • Comment récupérer un jeton d'accès pour l'utilisateur connecté

  • Comment échanger un jeton d'accès contre des informations d'identification AWS

  • Comment accéder au service Amazon Simple Storage Service (Amazon S3) avec les informations d'identification AWS

Rôle IAM pour les identités authentifiées

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

Épopées

TâcheDescriptionCompétences requises

Créez un groupe d'utilisateurs.

  1. Connectez-vous à la console de gestion AWS et ouvrez la console Amazon Cognito à l'adresse https://console.aws.amazon.com/cognito/home.

  2. Choisissez Gérer les groupes d'utilisateurs.

  3. Dans l'angle supérieur droit de la page, choisissez Créer un groupe d'utilisateurs.

  4. Donnez un nom à votre groupe d'utilisateurs, choisissez Revoir les paramètres par défaut, puis Create pool.

  5. Notez l'ID de groupe.

Developer

Ajoutez un client d'application.

Vous pouvez créer une application pour utiliser les pages Web intégrées pour l'inscription et la connexion de vos utilisateurs.

  1. Dans la barre de navigation située sur le côté gauche de la page du groupe d'utilisateurs, choisissez Clients d'applications sous Paramètres généraux, puis choisissez Ajouter un client d'application.

  2. Donnez un nom à votre application, puis choisissez Create app client.

  3. Notez l'ID du client de l'application et le secret du client (choisissez Afficher les détails pour voir le secret du client).

Developer
TâcheDescriptionCompétences requises

Créer un groupe d'identités .

  1. Sur la console Amazon Cognito, choisissez Manage Identity Pools, puis Create new identity pool.

  2. Entrez un nom pour le pool d'identités.

  3. Si vous souhaitez activer les identités non authentifiées, sélectionnez cette option dans la section Identités non authentifiées.

  4. Dans la section Fournisseurs d'authentification, configurez le pool d'identités Cognito en définissant l'ID du groupe d'utilisateurs et l'ID du client de l'application, puis choisissez Create Pool.

Developer

Attribuez des rôles IAM au pool d'identités.

Vous pouvez modifier les rôles IAM pour les utilisateurs authentifiés et non authentifiés, ou conserver les valeurs par défaut, puis choisir Autoriser. Pour ce modèle, nous modifierons le rôle IAM authentifié et fournirons l'accès à. s3:ListAllMyBuckets Pour obtenir un exemple de code, consultez le rôle IAM fourni plus haut dans la section Outils.

Developer

Copiez l'ID du pool d'identités.

Lorsque vous sélectionnez Autoriser à l'étape précédente, la page Getting started with Amazon Cognito s'affiche. Sur cette page, vous pouvez soit copier l'ID du pool d'identités depuis la section Obtenir les informations d'identification AWS, soit choisir Modifier le pool d'identités en haut à droite et copier l'ID du pool d'identités sur l'écran qui s'affiche.

Developer
TâcheDescriptionCompétences requises

Clonez l'exemple d'application Web ASP.NET Core.

  1. Clonez l'exemple d'application Web .NET Core depuis https://github.com/aws/ aws-aspnet-cognito-identity -provider.git.

  2. Accédez au samples dossier et ouvrez la solution. Dans ce projet, vous allez configurer le appsettings.json fichier et ajouter une nouvelle page qui affichera tous les compartiments S3 une fois la connexion réussie.

Developer

Ajoutez des dépendances.

Ajoutez une NuGet dépendance pour Amazon.AspNetCore.Identity.Cognito à votre application ASP.NET Core.

Developer

Ajoutez les clés et les valeurs de configuration à appsettings.json.

Incluez le code du appsettings.json fichier joint dans votre appsettings.json fichier, puis remplacez les espaces réservés par les valeurs des étapes précédentes.

Developer

Créez un nouvel utilisateur et connectez-vous.

Créez un nouvel utilisateur dans le groupe d'utilisateurs Amazon Cognito et vérifiez qu'il existe sous Utilisateurs et groupes dans le groupe d'utilisateurs.

Developer

Créez une nouvelle page Razor appelée MyS3Buckets.

Ajoutez une nouvelle page ASP.NET Core Razor à votre exemple d'application et remplacez le contenu de MyS3Bucket.cshtml et MyS3Bucket.cshtml.cs depuis l'exemple ci-joint. Ajoutez la nouvelle page MyS3bucket sous le menu de navigation de la _Layout.cshtml page.

Developer

Résolution des problèmes

ProblèmeSolution

Après avoir ouvert l'exemple d'application depuis le GitHub référentiel, une erreur s'affiche lorsque vous essayez d'ajouter le NuGet package au projet Samples.

Dans le src dossier, veillez à supprimer du Samples.sln fichier la référence au Amazon.AspNetCore.Identity.Cognito projet. Vous pouvez ensuite ajouter le NuGet package au projet Samples sans aucun problème.

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip