Configurer les Services Web Amazon pour l’authentification unique (SSO)
En intégrant Auth0 à AWS, vous permettrez à vos utilisateurs de se connecter à AWS en utilisant le fournisseur d’identité.
Pour configurer AWS pour SSO, vous devez compléter les étapes suivantes :
Créez un fournisseur d’identité externe dans AWS.
Configurez le Module complémentaire d’application Web SAML2 pour votre application Auth0.
Complétez la configuration du fournisseur d’identité AWS.
Créez un rôle IAM AWS.
Mappez le rôle AWS pour un utilisateur.
Créez un fournisseur d’identité externe dans AWS
Réglez un fournisseur d’identité externe dans AWS en utilisant le guide Connectez-vous à votre fournisseur d’identité externe AWS avec un changement.
Plutôt que de téléverser le fichier de métadonnées AWS, cliquez sur Afficher les valeurs de métadonnées individuelles.
Copiez les valeurs de l’URL de l’émetteur de SSO AWS et de l’URL ACS de SSO AWS. Vous utiliserez ces dernières dans la prochaine section.
Laissez cette page ouverte dans votre navigateur, car vous devrez terminer la configuration dans une section à venir.
Configurer SAML SSO pour Auth0
Configurez le Module complémentaire d’application Web SAML2 pour votre application à l’aide d’Auth0 Dashboard. Pour apprendre comment, consultez Configurer Auth0 comme fournisseur d’identité pour les services Web Amazon (AWS).
Compléter la configuration du fournisseur d’identité AWS
Retournez à la page de fournisseurs d’identité SSO AWS ouverte dans votre navigateur.
Téléchargez le fichier de métadonnées téléversé et sauvegardé dans la section précédente.
Révisez et confirmez le changement de source d’identité.
Créer un rôle IAM AWS
Pour utiliser le fournisseur, vous devez créer un rôle IAM en utilisant le fournisseur dans la politique de confiance du rôle.
Dans la barre latérale, sous Gestion de l’accès, naviguez vers Rôles. Cliquez sur Créer un rôle.
À la page suivante, il vous sera demandé de sélectionner le type d’identité de confiance. Sélectionnez SAML 2.0 Federation.
Lorsqu’invité, réglez le fournisseur créé ci-haut en tant que fournisseur SAML. Sélectionnez Autoriser l’accès programmatique et l’accès à la console de gestion AWS. Cliquez sur Suivant pour continuer.
Sur la page Joindre les politiques d’autorisations, sélectionnez les autorisations appropriées à joindre au rôle. Ces dernières définissent les autorisations que les utilisateurs ayant ce rôle auront avec AWS. Par exemple, pour donner à vos utilisateurs un accès en lecture seule au IAM, filtrez et sélectionnez l’autorisation
IAMReadOnlyAccess
. Une fois terminé, cliquez sur Prochaine étape.Le troisième écran Créer un rôle est Ajouter des balises. Vous pouvez utiliser des balises pour organiser les rôles que vous créez si vous en prévoyez un grand nombre.
Sur la page Révision, indiquez le Nom du rôle et révisez vos paramètres. Fournissez les valeurs des paramètres suivants :
Field (Champ) Description Role name (Nom du rôle) Nom descriptif de votre rôle. Role description ( Description du rôle) Description de la fonction pour laquelle votre rôle est utilisé. Révisez l’information des Entités de confiance et des Autorisations, puis cliquez sur Créer un rôle.
Mapper un rôle AWS pour un utilisateur
Les rôles AWS indiqués seront associés à une autorisation IAM qui applique le type d’accès autorisé pour une ressource, y compris les consoles AWS. Pour en savoir plus sur les rôles et les autorisations, consultez Création de rôles IAM.
Pour mapper un rôle AWS pour un utilisateur, créez une règle :
Dans l’extrait de code ci-haut,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); }
Was this helpful?
/user.awsRole
identifiez le rôle AWS et l’IdP. L’identifiant de rôle AWS se trouve devant la virgule, et l’identifiant IdP se trouve après la virgule.Votre règle peut obtenir ces deux valeurs de plusieurs façons. Vous pouvez obtenir ces valeurs à partir de la console IAM en sélectionnant les éléments créés dans AWS lors des étapes précédentes dans la barre latérale gauche. Le fournisseur d’identité et le rôle que vous avez créé ont tous deux un ARN qui peut être copié si vous les sélectionnez dans la console.
Dans l’exemple ci-dessus, ces deux valeurs sont codées en dur dans la règle. Vous pouvez également stocker ces valeurs dans le profil utilisateur ou les obtenir à l’aide d’autres attributs. Par exemple, si vous utilisez Active Directory, vous pouvez mapper les propriétés associées aux utilisateurs, telles que le
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', };
Was this helpful?
/
Mapper plusieurs rôles
Vous pouvez également attribuer un tableau au mappage de rôles (vous auriez donc awsRoles = [ role1, role2 ]
plutôt que awsRoles: role1
)
Par exemple, disons que vous disposez de groupes Active Directory avec 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"
}
}
};
Was this helpful?
Votre règle pourrait donc ressembler à ceci :
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 per user 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);
}
Was this helpful?
Configurer l’expiration de la session
Pour prolonger le délai autorisé avant l’expiration de la session AWS (3 600 secondes), utilisez une règle personnalisée. Votre règle définit l’attribut SessionDuration qui modifie la durée de la session.
function (user, context, callback) {
if(context.clientID !== '{yourClientId}'){
return callback(null, user, context);
}
user.awsRole = '{yourArn}';
user.awsRoleSession = '{yourRoleSession}';
user.time = 1000; // time until expiration in seconds
context.samlConfiguration.mappings = {
'https://aws.amazon.com/SAML/Attributes/Role': '{yourAwsRoleName}',
'https://aws.amazon.com/SAML/Attributes/RoleSessionName': '{yourAwsRoleSessionName}',
'https://aws.amazon.com/SAML/Attributes/SessionDuration': 'time' };
callback(null, user, context);
}
Was this helpful?
Tester la configuration
Rendez-vous à Dashboard > Applications > Applications, et cliquez sur le nom de votre application.
Sous l’onglet Modules complémentaires, sélectionnez le module complémentaire SAML2 Web App.
Sous l’onglet Utilisation, localisez l’URL de connexion du fournisseur d’identité. Vous devriez être redirigé vers la page de connexion du compte Auth0. Si la connexion réussit, vous serez redirigé vers AWS.