Configurer : EPE ou ESA pour utiliser les rôles ESM
Configurer : EPE ou ESA pour utiliser les rôles ESM
Cet article décrit les instructions de configuration du moteur de provisionnement Efecte ou du composant Efecte Secure Access pour lier le groupe d'annuaires au rôle de gestion de service Efecte.
Note!
Veuillez noter que l' ESA a rarement besoin d'informations de groupe, car elles sont gérées par EPE (Efecte Provisioning Task). EPE transmet généralement les données MemberOf à ESM, puis à ESS.
Note!
N'associez jamais de noms d'utilisateur à ces règles. Les autorisations doivent provenir des appartenances à des groupes et non des noms d'utilisateur.
Comment configurer EPE pour utiliser les rôles ESM
- Afin de récupérer les groupes du répertoire vers ESM, veuillez effectuer le mappage approprié vers la configuration EPE memberOf .

- Vérifiez que memberOf est le même code que celui défini dans servlet.auth.person.groups.attribute.code dans les paramètres de la plateforme.

- Pour connecter les rôles ESM aux groupes, utilisez l'identifiant externe sur l'écran de configuration des rôles d'ESM :

- Lors de la connexion, il parcourt les groupes attribués à une personne ; le nom de la propriété est défini dans « servlet.auth.person.groups.attribute.code », valeur par défaut : « entitlements »
- si même un groupe est égal à 'servlet.auth.admin.ad.group', il donne un accès de niveau ROOT
- si même un groupe est égal à « servlet.auth.user.ad.group », il donne un accès de niveau NORMAL
Comment configurer ESA pour utiliser les rôles ESM AD
- Connectez-vous avec ESA Admin (main.admin) à l'URL https://example.efectecloud.com/auth/admin
- Sélectionnez le royaume correct dans le menu supérieur

- Ouvrez les paramètres du client depuis le panneau latéral gauche

- Sélectionnez la configuration du client (se termine par shibboleth) https://example.efectecloud.com/shibboleth

- Sélectionnez l'onglet Étendues du client et sélectionnez le lien Shibboleth

- Sélectionnez le bouton Ajouter un mappeur et choisissez Par configuration dans la liste déroulante

- Sélectionnez l'option SAML Effect ESM userLevel mapper et ajoutez les noms et le format d'attribut SAML comme illustré ci-dessous (com:efecte:esm:userLevel et Unspecified). Enregistrez les modifications.

Notez que si le client n'utilise pas les noms de groupe de référence par défaut ESMAdmins, ESMUsers et ESMreaders, ces noms peuvent être modifiés dans l'hôte ESA . Les mappeurs sont stockés dans « /opt/esa/ keycloak -scripts/[TENANT/REALM] » sur le conteneur ESA .
Mappeur par défaut dans l'hôte :
// Root, Normal, Readonly, NoAccess
var
adminGroup = "ESMadmins";
var
normalGroup = "ESMusers";
var
readOnlyGroup = "ESMreaders";
var
userLevelDefault = "NoAccess";
var
userLevelIndex = 0;
- Configurer le mappeur com:efecte:esm:roles en ajoutant un nouveau mappeur par configuration

- Sélectionnez l'option SAML Effecte ESM roles mapper [Nom du domaine] et ajoutez les noms et le format d'attribut SAML comme illustré ci-dessous (com:efecte:esm:roles et Non spécifié). Enregistrez les modifications.

- Allez à l'ESM. Dans l'autorisation de l'ESM, chaque autorisation possède un attribut « Identifiant externe » - il doit être défini sur le nom du groupe de répertoires.
Comment configurer ESA pour utiliser les rôles ESM Entra (anciennement Az)
Prérequis : la revendication de groupes est configurée sur Azure (les groupes sont envoyés d’ Azure à ESA ), SAML et OIDC sont tous deux pris en charge.
1. Connectez-vous avec ESA Admin (main.admin) à l'URL https://example.efectecloud.com/auth/admin
2. Sélectionnez le royaume correct dans le menu supérieur 
3. Ajoutez le mappeur de groupes dans les paramètres des fournisseurs d'identité (vous devez ajouter un nom d'attribut différent en fonction de votre type d'authentification SAML ou OIDC . Accédez à votre fournisseur d'identité et à l'onglet mappeurs. Cette revendication de groupe (informations) ne provient pas par défaut d' Entra . Vérifiez donc que le client a configuré cette revendication de groupe sur Entra conformément aux uid . Pour OIDC : instructions client OIDC et pour SAML instructions client SAML
3A. Pour SAML utilisez le nom d'attribut : http://schemas.microsoft.com/ws/2008/06/identity/claims/groups, remplacement du mode de synchronisation : Force, Claim : groups. 
3B. Pour OIDC utilisez le nom d'attribut : groupes, remplacement du mode de synchronisation : Force, revendication : groupes

4. Après cela, ouvrez les paramètres du client à partir du panneau latéral gauche 
5. Sélectionnez Configuration client (se termine par shibboleth) https://example.efectecloud.com/shibboleth 
6. Sélectionnez l'onglet Étendues du client et sélectionnez le lien Shibboleth 
7. Sélectionnez le bouton Ajouter un mappeur et choisissez Par configuration dans la liste déroulante 
8. Sélectionnez l'option SAML Effect ESM userLevel mapper et ajoutez les noms et le format d'attribut SAML comme illustré ci-dessous (com:efecte:esm:userLevel et Unspecified). Enregistrez les modifications.

Veuillez noter que si le client n'utilise pas les groupes par défaut ESMAdmins, ESMUsers et ESMreaders, les noms de ces groupes doivent être modifiés dans l'hôte ESA . Les mappeurs sont stockés dans « /opt/esa/ keycloak -scripts/[TENANT/REALM] ».
Mappeur par défaut dans l'hôte :
// Root, Normal, Readonly, NoAccess
var
adminGroup = "ESMadmins";
var
normalGroup = "ESMusers";
var
readOnlyGroup = "ESMreaders";
var
userLevelDefault = "NoAccess";
var
userLevelIndex = 0;
Notez que les noms peuvent également être des identifiants de groupe, et non des noms. Cela dépend de la configuration des revendications dans Entra ID ( Azure ).
9. Configurez le mappeur com:efecte:esm:roles en ajoutant un nouveau mappeur par configuration 
10. Sélectionnez l'option SAML Efecte ESM roles mapper [Nom du domaine] et ajoutez les noms et le format d'attribut SAML comme illustré ci-dessous (com:efecte:esm:roles et Unspecified). Enregistrez les modifications. 
11. Pour connecter les rôles ESM aux groupes Azure , utilisez l'identifiant externe sur l'écran de configuration des rôles d'ESM :
Remarque : il doit s’agir de l’ ObjectGUID du groupe ou du nom de groupe du groupe Azure, selon la façon dont il est configuré pour les revendications de groupe. 
Processus de connexion ESM
1. ESM lit le nom de l'utilisateur principal à partir de la requête
- si c'est NULL - il rejette la connexion
2. ESM lit esm_userLevel à partir de la requête
- si c'est NOACCESS - il rejette la connexion
3. ESM essaie de trouver un utilisateur déjà existant (PAS une personne) en fonction du nom principal
- si 'servlet.auth.create.users' est défini sur false et que l'utilisateur n'est PAS trouvé, il rejette la connexion
4. Si l'utilisateur n'a pas été trouvé, il essaie de le créer :
- d'abord, il regarde la liste des personnes et essaie d'y trouver une correspondance (par nom principal)
critères.join(Entity.TEMPLATE).add(Template.CODE, conf.person.template);
critères.add(Entité.IS_DELETED, false);
critères.add(Selections.macro("$" + uid + "$"), uid );
- si la personne n'a pas été trouvée, il essaie de la créer
- il lit esm_email (obligatoire), esm_firstName, esm_lastName à partir de la requête et crée l'entité Person
- s'il y a eu une erreur en cours de route, par exemple si la personne n'a pas été créée ou si plusieurs personnes portant le même nom ont été trouvées, la connexion est rejetée
- cela confirme également que l'utilisateur et la personne sont connectés via une propriété 'servlet.auth.person.user.attribute.code' (valeur par défaut : efecte_user),
s'il n'y a pas d'utilisateur dans cette référence, il rejette également la connexion
- il crée ensuite un utilisateur et y place une référence à une personne
5. S'il y a eu un problème lors de la création d'un utilisateur en cours de route, il rejette la connexion, mais il effectue également une vérification :
si (userEntity == null || utilisateur.getPassword() != null) {
renvoie vrai ; // L'utilisateur est créé/modifié par l'installateur/l'administrateur
}
6. D'une manière ou d'une autre, si la personne qui devrait être liée à un utilisateur n'est PAS présente, il essaie de créer une entité Personne et de la lier à un utilisateur
7. Il essaie de lire le niveau utilisateur à partir de la requête (si celui-ci était présent dans le message SAML )
- si d'une manière ou d'une autre aucune personne n'est créée, il attribue automatiquement AD UNIQUEMENT
- sinon, il itère sur les groupes attribués à une personne - le nom de la propriété est défini dans 'servlet.auth.person.groups.attribute.code', valeur par défaut : « groups »
- si même un groupe est égal à ' servlet.auth.admin.ad .group', valeur par défaut : "Efecte Administrator" - cela donne le niveau ROOT
- si même un groupe est égal à ' servlet.auth.user.ad .group', valeur par défaut : "Efecte User" - il donne le niveau NORMAL
- sinon cela donne le niveau AD UNIQUEMENT
8. Si dans la requête il y a un « esm_userLevel » envoyé, il essaie d'attribuer des rôles à un utilisateur
- il lit la propriété SAML « rôles », l'itère (séparé par un point-virgule), et essaie d'ajouter chaque rôle à l'utilisateur
9. À la fin, il agit différemment, selon le niveau utilisateur défini précédemment :
- si cela a été défini sur NORMAL ou ROOT, ET que l'utilisateur a été réellement créé lors du traitement de cette demande ET qu'aucun « esm_userLevel » n'a été envoyé dans le
Message SAML , il essaiera d'attribuer à cet utilisateur le rôle par défaut, défini avec la propriété système : « servlet.auth.user.roles », valeur par défaut : personne de support
- si cela a été défini sur AD UNIQUEMENT et que « esm_userLevel » n'a PAS été envoyé avec le message SAML , il essaiera d'ajouter les rôles « servlet.auth.user.readonly.roles » à cet utilisateur
Dépannage
Extension Saml pour le navigateur
L'extension SAML (décodeurs SAML ) pour le navigateur est utile lors du débogage de la connexion
Les décodeurs SAML sont disponibles sous forme d'extensions de navigateur (par exemple, SAML Tracer pour Firefox, SAML Chrome Panel pour Google Chrome). Par exemple : https://addons.mozilla.org/en-US/firefox/addon/saml-message-decoder-extension/
Journaux
Si la connexion ESA fonctionne mais pas la connexion ESM
- Vérifiez le journal ESM appelé itsm.log (Efecte ESM→ Maintenance→Logs→Download logs→itsm.log)
Si la connexion ESA ne fonctionne pas
- Vérifiez le server.log de l' ESA (opt/ keycloak /standalone/log/server.log)
- Vérifiez le journal du conteneur ESA /opt/ keycloak /logs/ keycloak .log
Plus d'informations sur les mappeurs JavaScript personnalisés : https://docs.efecte.com/internal-configuration-instructions/1812412-esa-custom-javascript-mappers