Comment puis-je configurer mon équilibreur de charge d'application pour authentifier les utilisateurs via un groupe d'utilisateurs Amazon Cognito situé dans un autre compte AWS ?

Date de la dernière mise à jour : 27/05/2020

Je souhaite utiliser l'authentification Amazon Cognito sur mon équilibreur de charge d'application, mais mon groupe d'utilisateurs se trouve dans un autre compte AWS. Est-il possible d'utiliser un groupe d'utilisateurs entre comptes pour l'authentification ?

Brève description

Actuellement, seuls les groupes d'utilisateurs Amazon Cognito du même compte sont pris en charge par défaut lors de la configuration de votre équilibreur de charge d'application pour l'authentification des utilisateurs. Toutefois, comme solution palliative, vous pouvez configurer votre groupe d'utilisateurs entre comptes en tant que fournisseur d'identité (IdP) OpenID Connect (OIDC).

Suivez ces instructions pour configurer votre équilibreur de charge d'application dans un compte (« compte B ») pour l'authentification via un groupe d'utilisateurs dans un autre compte (« compte A »).

Résolution

Créer un équilibreur de charge d'application

Si vous ne l'avez pas déjà fait, allez dans le compte B et créez un équilibreur de charge d'application avec un écouteur HTTPS.

Remarque : lestypes d'actions de règle authenticate-cognito et authenticate-oidc sont pris en charge uniquement avec les écouteurs HTTPS.

Obtenir le nom DNS de votre équilibreur de charge d'application dans le compte B

  1. Dans le compte B, ouvrez la page Équilibreurs de charge de la console Amazon Elastic Compute Cloud (Amazon EC2).
  2. Sélectionnez votre équilibreur de charge d'application.
  3. Sur l'onglet Description copiez le nom DNSde votre équilibreur de charge. Vous en aurez besoin pour accéder à l'URL du point de terminaison de votre équilibreur de charge à des fins de test ultérieurement.

Créer et configurer un groupe d'utilisateurs dans le compte A

  1. Dans le compte A, créez un groupe d'utilisateurs Amazon Cognito avec un client d'application. Pour le client d'application, tâchez de cocher la case Générer un secret de client. Pour plus d'informations, consultez Préparer l'utilisation d'Amazon Cognito.
    Remarque : lors de la création du groupe d'utilisateurs, définissez les paramètres souhaités pour la production. Certains paramètres de groupe d'utilisateurs ne peuvent pas être modifiés une fois que vous avez créé le groupe d'utilisateurs. Par exemple, vous ne pouvez pas modifier les attributs standard requis pour l'enregistrement des utilisateurs.
  2. Dans la console Amazon Cognito, sur la page Paramètres généraux de votre groupe d'utilisateurs, notez l'ID du groupe. Vous en aurez besoin ultérieurement pour obtenir les informations de configuration OIDC de votre groupe d'utilisateurs.
  3. Dans le volet de navigation de gauche, sous Paramètres généraux, choisissez Clients d'application.
  4. Sur la page Clients d'application, procédez comme suit :
    Choisissez Afficher les informations.
    Copiez l'ID du client d'application et le secret du client d'application. Vous en aurez besoin ultérieurement pour configurer votre équilibreur de charge d'application pour l'authentification des utilisateurs.
  5. Dans le volet de navigation de gauche, sous Intégration d'application, choisissez Paramètres du client d'application.
  6. Sur la page Paramètres du client d'application, procédez comme suit :
    Sous Fournisseurs d'identité activés, cochez la case Groupe d'utilisateurs Cognito.
    Pour URL de rappel, entrez https://loadBalancerDNSName/oauth2/idpresponse. Si vous avez associé un domaine personnalisé à votre équilibreur de charge à l'aide d'un enregistrement CNAME, entrez https://CNAME/oauth2/idpresponse.
    Remarque : remplacez loadBalancerDNSName par le nom DNS que vous avez copié à partir de la console Amazon EC2. Si vous utilisez un enregistrement CNAME, remplacez CNAME par votre domaine personnalisé.
    Pour les URL de déconnexion, saisissez une URL vers laquelle vous souhaitez que vos utilisateurs soient redirigés après s'être déconnectés. Pour le test, vous pouvez saisir n'importe quelle URL valide, par exemple https://exemple.com/.
    Sous Flux OAuth autorisés, cochez au moins la case Octroi du code d'autorisation.
    Sous Portées OAuth autorisées, cochez au moins la case openid. La portée openid renvoie un jeton d'identification. Sélectionnez toutes les portées OAuth supplémentaires en fonction de vos besoins.
  7. Sélectionnez Enregistrer les modifications.
  8. Dans le volet de navigation de gauche, sous Intégration d'application, choisissez Nom du domaine.
  9. Ajoutez un nom de domaine à votre groupe d'utilisateurs.

Pour plus d'informations, consultez Configuration d'un client d'application de groupe d'utilisateurs et Ajout de fournisseurs d'identité OIDC à un groupe d'utilisateurs.

Obtenir les informations de configuration OIDC de votre groupe d'utilisateurs

Accédez au point de terminaison de configuration OIDC de votre groupe d'utilisateurs. Vous avez besoin des informations de configuration pour configurer votre groupe d'utilisateurs en tant que fournisseur d'identité OIDC sur votre équilibreur de charge d'application.

  1. Dans votre navigateur, entrez l'URL suivante :
    https://cognito-idp.region.amazonaws.com/userPoolId/.well-known/openid-configuration
    Remarque : remplacez région par la région AWS de votre groupe d'utilisateurs. (Par exemple, us-east-1.) Remplacez userPoolId par l'ID de votre groupe d'utilisateurs que vous avez noté précédemment.
  2. Copiez la réponse JSON que vous voyez dans votre navigateur. Notez les valeurs des éléments suivants :
    authorization_endpoint
    issuer
    scopes_supported
    token_endpoint
    userinfo_endpoint

Configurer votre équilibreur de charge d'application dans le compte B

  1. Dans le compte B, sur la page Équilibreurs de charge de la console Amazon EC2, sélectionnez votre équilibreur de charge d'application.
  2. Dans l'onglet Écouteurs sous Règles, choisissez Afficher/modifier les règles de votre écouteur HTTPS.
  3. Dans la barre de menus, choisissez l'icône de crayon (Modifier les règles).
  4. En regard de la règle par défaut de votre écouteur HTTPS, choisissez l'icône de crayon (Modifier la règle).
  5. Sous THEN, choisissez Ajouter une action, puis effectuez les opérations suivantes :
    Choisissez Authentifier.
    Pour Authentifier, choisissez OIDC.
    Pour Émetteur, entrez la valeur d'émetteur de la configuration OIDC de votre groupe d'utilisateurs.
    Pour Point de terminaison d'autorisation, entrez la valeur authorization_endpoint.
    Pour Point de terminaison de jeton, entrez la valeur token_endpoint.
    Pour Point de terminaison d'informations utilisateur, entrez la valeur userinfo_endpoint.
    Pour ID du client, entrez l'ID du client d'application que vous avez copié précédemment à partir de la console Amazon Cognito.
    Pour Secret du client, entrez le secret du client d'application que vous avez copié précédemment.
    Développez Paramètres avancés.
    Pour Portée, entrez les portées que vous avez définies pour votre client d'application de groupe d'utilisateurs. Pensez à les séparer avec une espace. Vous pouvez trouver les portées dans la configuration OIDC de votre groupe d'utilisateurs. Par exemple, si la valeur scopes_supported dans la configuration est [« openid »,« email », » « phone », « profile »], saisissez openid email phone profile.
    Choisissez l'icône de coche.
  6. Sous THEN, choisissez Ajouter une action, puis effectuez les opérations suivantes :
    Remarque : si vous ne pouvez pas choisir Ajouter une action, supprimez l'action de routage existante (par exemple, Rediriger vers) à l'aide de l'icône de corbeille, puis réessayez.
    Choisissez Réacheminer vers.
    Pour Réacheminer vers, choisissez un ou plusieurs groupes cibles.
    (Facultatif) Définissez la permanence au niveau du groupe.
    Choisissez l'icône de coche.
  7. Choisissez Mettre à jour. La règle par défaut de l'écouteur HTTPS est mise à jour.

Pour plus d'informations, consultez Modification d'une règle.

Tester la configuration

Dans votre navigateur, entrez l'une des URL suivantes :

  • https://loadBalancerDNSName/
  • https://CNAME/

Remarque : remplacez loadBalancerDNSName par le nom DNS que vous avez copié précédemment à partir de la console Amazon EC2. Vous pouvez aussi remplacer CNAME par votre domaine personnalisé.

Vous êtes redirigé vers l'interface utilisateur Web hébergée Amazon Cognito de votre groupe d'utilisateurs. Lorsqu'un utilisateur se connecte ici et s'authentifie par le groupe d'utilisateurs, il est redirigé vers la cible.