Activeer een authenticatie met 2 factoren met Google Authenticator

0000002635     -      25-06-2018

De hieronder afgebeelde instellingen, laten zien hoe je een authenticatie met 2 factoren kan activeren en gebruiken met behulp van Google Authenticator. Deze authenticatie is gebaseerd op:

  • het gebruikelijke Mercator wachtwoord (eerste factor)
  • het invoeren van een pincode, gegenereerd door een smartphone met een interval van 30 seconden (tweede factor)

Om dit te kunnen gebruiken, moet men een applicatie installeren op een smartphone.

In Mercator, moet men 2 velden toevoegen van het type bit in e tabel USERS:

  • GA_needed : Google Authenticator is nodig voor de gebruiker.
  • GA_active : Google Authenticator is geactiveerd voor deze gebruiker

Vervolgens, moet je in de customizer "Params" twee checkboxen installeren die geassocieerd zijn met deze velden, deze verschijnen in het eerste tabblad van de gebruikersinterface.

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) //We zijn in het instellingenscherm van de gebruikers
            {
                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(155, 294);
                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(155, 317);
                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);
            }
        }
    }
}

De checkbox "Google Authenticator vereist" moet aangevinkt zijn voor de gebruikers die de authenticatie met 2 factoren wensen te gebruiken. De checkbox "Google Authenticator actif" moet niet manueel aangevinkt worden. Het is automatisch aangevinkt indien de gebruiker zijn parameters voor Google Authentication zijn ingevuld. Men kan het veld uitvinken als de gebruiker van smartphone verandert, bijvoorbeeld.

Vervolgens, plaatst men de assembly MercatorGAuthenticator.dll uit het zipbestand in de hoofddirectory van Mercator (en in SQL-bestanden / Assemblies, om de automatische distributie te verzekeren.)

Tenslotte, moet het volgende event in de customizer worden opgevangen AfterLogin van 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();
        }
    }
}

Vanaf nu is deze authenticatie ingeschakeld.

De gebruiker voor wie deze authenticatie vereist is, zal het volgende scherm te zien krijgen.

De gebruiker moet dan de QR-code inscannen met behulp van de Google Authenticator applicatie op zijn smartphone, en de geretourneerde pincode invoeren in Mercator. De volgende keren dat je inlogt, volstaat het om de PIN-code in te voeren, maar de QR-code zal niet meer worden weergegeven.

 

Opmerkingen :

  • Deze procedure moet chronologisch en met zorg gevolgd worden, om te voorkomen dat de gebruiker geblokkeerd wordt in Mercator.
  • Het is aangeraden om de optie "Automatisch inloggen" op "NEEN" te zetten, zoniet wordt de eerste stap van de authenticatie overgeslagen.


Te laden : 0000002635.zip (28 Kb - 14-03-2016)