Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Activer une authentification à 2 facteurs avec Google Authenticator

0000002635     -      14/06/2024

Le paramétrage illustré ici montre comment activer une authentification à deux facteurs, en utilisant Google Authenticator. Cette authentification est basée sur :

  • la saisie du mot de passe Mercator habituel (le premier facteur)
  • la saisie d'un code PIN généré par un smartphone et variant toutes les 30 secondes (le second facteur)

Pour pouvoir utiliser cela, il faut installer une application sur un smartphone.

Dans Mercator, il faut ajouter ces 2 champs de type bit dans la table USERS :

  • GA_needed : Google Authenticator est il requis pour cet utilisateur
  • GA_active : Google Authenticator a-t-il été activé pour cet utilisateur

Ensuite, ce customizer Params installe 2 cases à cocher associées à ces champs, qui apparaîtront dans le premier onglet de l'écran des utilisateurs.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;


namespace Param
{
    public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer
    {

        public void FormLoadCustomize(Form WindowsForm)
        {
            if (WindowsForm is MercatorUi.Forms.Param.ParamUsersForm) // on est dans l'écran de paramétrage des utilisateurs
            {
                MercatorUi.Forms.Param.ParamUsersForm paramUsersForm = (MercatorUi.Forms.Param.ParamUsersForm)WindowsForm;

                MercatorUi._BaseClasses.BindableCheckBox checkBoxGaNeeded = new MercatorUi._BaseClasses.BindableCheckBox();
                checkBoxGaNeeded.BackgroundStyle.Class = "";
                checkBoxGaNeeded.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
                checkBoxGaNeeded.Location = new System.Drawing.Point(237, 224);
                checkBoxGaNeeded.Name = "checkBoxGaNeeded";
                checkBoxGaNeeded.Size = new System.Drawing.Size(190, 23);
                checkBoxGaNeeded.Source = "GA_needed";
                checkBoxGaNeeded.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
                checkBoxGaNeeded.Text = "Google Authenticator requis";
                checkBoxGaNeeded.TextE = "Google Authenticator required";
                checkBoxGaNeeded.TextN = "Google Authenticator nodig";
                checkBoxGaNeeded.ReadOnly = paramUsersForm.OpenAsReadOnly;
                paramUsersForm.TabControlProfile.TabPages[0].Controls.Add(checkBoxGaNeeded);
                checkBoxGaNeeded.CreateBinding(paramUsersForm.Dt);

                MercatorUi._BaseClasses.BindableCheckBox checkBoxGaActive = new MercatorUi._BaseClasses.BindableCheckBox();
                checkBoxGaActive.BackgroundStyle.Class = "";
                checkBoxGaActive.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
                checkBoxGaActive.Location = new System.Drawing.Point(237, 259);
                checkBoxGaActive.Name = "checkBoxGaActive";
                checkBoxGaActive.Size = new System.Drawing.Size(190, 23);
                checkBoxGaActive.Source = "GA_active";
                checkBoxGaActive.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
                checkBoxGaActive.Text = "Google Authenticator actif";
                checkBoxGaActive.TextE = "Google Authenticator active";
                checkBoxGaActive.TextN = "Google Authenticator actief";
                checkBoxGaActive.ReadOnly = paramUsersForm.OpenAsReadOnly;
                paramUsersForm.TabControlProfile.TabPages[0].Controls.Add(checkBoxGaActive);
                checkBoxGaActive.CreateBinding(paramUsersForm.Dt);
            }
        }
    }
}

La case "Google Authenticator requis" doit être cochée pour les utilisateurs pour lesquels on souhaite l'authentification par deux facteurs. La case "Google Authenticator actif" ne doit pas être cochée manuellement. Elle se cochera automatiquement dès que l'utilisateur aura initialisé les paramètres de l'authentification Google. Par contre, on pourra la décocher si l'utilisateur change de smartphone, par exemple.

Ensuite, il faut placer l'assembly MercatorGAuthenticator.dll, dans le répertoire principal de Mercator (et dans les fichiers SQL / Assemblies, pour en assurer la distribution automatique).

Enfin, le customizer suivant doit être installé. Il exploite l'évènement AfterLogin de MercatorUi.Main.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
// <ReferenceInclude>"MercatorGAuthenticator.dll"</ReferenceInclude>

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {
        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.AfterLogin += new MercatorUi.Main.AfterLoginEventHandler(GlobalsMain_AfterLogin);
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.AfterLogin -= new MercatorUi.Main.AfterLoginEventHandler(GlobalsMain_AfterLogin);
            }
        }      
        
        void GlobalsMain_AfterLogin(object sender, MercatorUi.Main.AfterLoginEventArgs e)
        {
            e.CancelLogin = !MercatorGAuthenticator.ClassGA.AfterLogin();
        }
    }
}

A partir de ce moment, l'authentification à deux facteurs est active.

L'utilisateur pour qui cette authentification est requise recevra l'écran suivant :

Il doit alors scanner le code QR dans l'application Google Authenticator de son smartphone et saisir le code PIN renvoyé. Lors des prochains logins, le code PIN devra aussi être saisi, mais le code QR ne sera plus présenté.

 

Remarques :

  • Cette procédure doit être suivie chonologiquement et avec soin, afin d'éviter tout blocage définitif de l'entrée dans Mercator.
  • Il est recommandé de mettre l'option "Login automatique" à "NON", sinon l'étape du premier facteur est contournée.


A télécharger : 0000002635.zip (28 Kb - 14/03/2016)