Passer au contenu principal
En intégrant Auth0 à AWS, vous permettrez à vos utilisateurs de se connecter à AWS à l’aide de n’importe quel pris en charge. Pour configurer le dans AWS, vous devez effectuer les étapes suivantes :
  1. Créez un fournisseur d’identité externe dans AWS.
  2. Configurez le module complémentaire SAML2 Web App pour votre application Auth0.
  3. Terminez la configuration du fournisseur d’identité dans AWS.
  4. Créez un rôle AWS IAM.
  5. Attribuez le rôle AWS à un utilisateur.

Créer un fournisseur d’identité externe dans AWS

  1. Configurez un fournisseur d’identité externe dans AWS en suivant le guide AWS Connect to your External Identity Provider, avec une seule modification.
    1. Au lieu de télécharger le fichier de métadonnées AWS, cliquez sur Show Individual Metadata Values.
    2. Copiez les valeurs AWS SSO issuer URL et AWS SSO ACS URL. Vous les utiliserez dans la section suivante.
  2. Laissez cette page ouverte dans votre navigateur, car vous devrez terminer la configuration dans une section ultérieure.

Configurer le SSO SAML pour Auth0

Configurez le module complémentaire SAML2 Web App pour votre application à l’aide de . Pour savoir comment procéder, consultez Configurer Auth0 comme fournisseur d’identité pour Amazon Web Services.

Finaliser la configuration du fournisseur d’identité AWS

  1. Revenez à la page du fournisseur d’identité AWS SSO ouverte dans votre navigateur.
  2. Téléversez le fichier de métadonnées que vous avez téléchargé et enregistré dans la section précédente.
  3. Vérifiez, puis confirmez que vous changez la source d’identité.

Créer un rôle AWS IAM

Pour utiliser le fournisseur, vous devez créer un rôle IAM qui utilise ce fournisseur dans la politique d’approbation du rôle.
  1. Dans la barre latérale, sous Access Management, accédez à Roles. Cliquez sur Create Role.
  2. Sur la page suivante, vous devrez sélectionner le type d’entité approuvée. Sélectionnez SAML 2.0 Federation.
  3. Lorsque vous y êtes invité, définissez le fournisseur que vous avez créé ci-dessus comme SAML provider. Sélectionnez Allow programmatic and AWS Management Console access. Cliquez sur Next pour continuer.
  4. Sur la page Attach Permission Policies, sélectionnez les politiques appropriées à associer au rôle. Elles définissent les autorisations dont disposeront dans AWS les utilisateurs auxquels ce rôle est attribué. Par exemple, pour accorder à vos utilisateurs un accès en lecture seule à IAM, filtrez et sélectionnez la politique IAMReadOnlyAccess. Une fois terminé, cliquez sur Next Step.
  5. Le troisième écran Create Role est Add Tags. Vous pouvez utiliser des balises pour organiser les rôles que vous créez si vous prévoyez en créer un grand nombre.
  6. Sur la page Review, définissez le Role Name et passez en revue vos paramètres. Fournissez des valeurs pour les paramètres suivants :
    ChampDescription
    Role nameNom descriptif de votre rôle.
    Role descriptionDescription de l’utilisation du rôle.
  7. Passez en revue les renseignements Trusted entities et Policies, puis cliquez sur Create Role.

Associer un rôle AWS à un utilisateur

Pour voir un exemple de définition d’une règle côté serveur qui attribue un rôle dans un cas d’utilisation avancé, consultez le tutoriel Amazon API Gateway.
Les rôles AWS indiqués seront associés à une politique IAM qui détermine le type d’accès autorisé à une ressource, y compris les consoles AWS. Pour en savoir plus sur les rôles et les politiques, consultez Creating IAM Roles.
  1. Pour associer un rôle AWS à un utilisateur, créez une Rule :
    function (user, context, callback) {
    
      user.awsRole = 'arn:aws:iam::951887872838:role/TestSAML,arn:aws:iam::951887872838:saml-provider/MyAuth0';
      user.awsRoleSession = user.name;
    
      context.samlConfiguration.mappings = {
        'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
        'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession'
      };
    
      callback(null, user, context);
    
    }
    
    Dans l’extrait de code ci-dessus, user.awsRole identifie le rôle AWS et l’IdP. L’identifiant du rôle AWS se trouve avant la virgule, et l’identifiant de l’IdP se trouve après la virgule.
    1. Votre Rule peut obtenir ces deux valeurs de plusieurs façons. Vous pouvez les récupérer à partir de la console IAM en sélectionnant, dans la barre latérale gauche, les éléments que vous avez créés dans AWS aux étapes précédentes. Le fournisseur d’identité (IdP) et le rôle que vous avez créés ont tous deux un ARN que vous pouvez copier en les sélectionnant dans la console.
    2. Dans l’exemple ci-dessus, ces deux valeurs sont codées en dur dans la Rule. Vous pouvez aussi les stocker dans le profil de l’utilisateur ou les dériver à partir d’autres attributs. Par exemple, si vous utilisez Active Directory, vous pouvez associer des propriétés liées aux utilisateurs, comme group, au rôle AWS approprié :
      var awsRoles = {
        'DomainUser': 'arn:aws:iam::951887872838:role/TestSAML,arn:aws:iam::95123456838:saml-provider/MyAuth0',
        'DomainAdmins': 'arn:aws:iam::957483571234:role/SysAdmins,arn:aws:iam::95123456838:saml-provider/MyAuth0'
      };
      user.awsRole = awsRoles[user.group];
      user.awsRoleSession = user.email;
      
      context.samlConfiguration.mappings = {
        'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
        'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession',
      };
      

Associer plusieurs rôles

Vous pouvez aussi associer un tableau au mappage des rôles (vous auriez donc awsRoles = [ role1, role2 ] au lieu de awsRoles: role1) Par exemple, supposons que vous avez des groupes Active Directory ayant la structure suivante :
var user = {
  app_metadata: {
    ad_groups: {
      "admins": "some info not aws related",
      "aws_dev_Admin": "arn:aws:iam::123456789111:role/Admin,arn:aws:iam::123456789111:saml-provider / Auth0",
      "aws_prod_ReadOnly": "arn:aws:iam::123456789999:role/ReadOnly,arn:aws:iam::123456789999:saml-provider / Auth0"
    }
  }
};
Votre Rule pourrait donc se présenter ainsi :
function (user, context, callback) {

  var userGroups = user.app_metadata.ad_groups;

  function awsFilter(group) {
    return group.startsWith('aws_');
  }

  function mapGroupToRole(awsGroup) {
    return userGroups[awsGroup];
  }

  user.awsRole = Object.keys(userGroups).filter(awsFilter).map(mapGroupToRole);
  user.awsRoleSession = 'myawsuser'; // unique pour chaque utilisateur http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

  context.samlConfiguration.mappings = {
    'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
    'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession'
  };

  callback(null, user, context);

}

Configurer l’expiration de la session

Pour allonger la durée avant l’expiration de la session AWS (3 600 secondes), utilisez une Rule personnalisée. Cette Rule définit l’attribut SessionDuration, qui modifie la durée de la session.

Tester la configuration

  1. Accédez à Dashboard > Applications > Applications, puis cliquez sur le nom de votre application.
  2. Dans l’onglet Addons, sélectionnez le module complémentaire SAML2 Web App.
  3. Dans l’onglet Usage, repérez l’URL de connexion du fournisseur d’identité. Vous devriez être redirigé vers la page de connexion de votre compte Auth0. Si la connexion réussit, vous serez redirigé vers AWS.

Pour en savoir plus